ocean-subgraph/abis/ERC20Template.json

1554 lines
108 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "ERC20Template",
"sourceName": "contracts/templates/ERC20Template.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "signer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "AddedMinter",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "signer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "AddedPaymentManager",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "signer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "CleanedPermissions",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "currentMinter",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newMinter",
"type": "address"
}
],
"name": "MinterApproved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "currentMinter",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newMinter",
"type": "address"
}
],
"name": "MinterProposed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "dispenserContract",
"type": "address"
}
],
"name": "NewDispenser",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "exchangeContract",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "baseToken",
"type": "address"
}
],
"name": "NewFixedRate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newPaymentCollector",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "NewPaymentCollector",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "poolAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "ssContract",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "baseTokenAddress",
"type": "address"
}
],
"name": "NewPool",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "orderTxId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "number",
"type": "uint256"
}
],
"name": "OrderReused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "consumer",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "payer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "serviceIndex",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "publishMarketAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "OrderStarted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "providerFeeAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "providerFeeToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "providerFeeAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes",
"name": "providerData",
"type": "bytes"
},
{
"indexed": false,
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "validUntil",
"type": "uint256"
}
],
"name": "ProviderFees",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "PublishMarketFeeAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "PublishMarketFeeToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "PublishMarketFeeAmount",
"type": "uint256"
}
],
"name": "PublishMarketFees",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "PublishMarketFeeAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "PublishMarketFeeToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "PublishMarketFeeAmount",
"type": "uint256"
}
],
"name": "PublishMarketFeesChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "signer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "RemovedMinter",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "signer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "RemovedPaymentManager",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
},
{
"inputs": [],
"name": "BASE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DOMAIN_SEPARATOR",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PERMIT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_minter",
"type": "address"
}
],
"name": "addMinter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_paymentManager",
"type": "address"
}
],
"name": "addPaymentManager",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "authERC20",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burnFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "cap",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "cleanFrom721",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "cleanPermissions",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_dispenser",
"type": "address"
},
{
"internalType": "uint256",
"name": "maxTokens",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxBalance",
"type": "uint256"
},
{
"internalType": "bool",
"name": "withMint",
"type": "bool"
},
{
"internalType": "address",
"name": "allowedSwapper",
"type": "address"
}
],
"name": "createDispenser",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "fixedPriceAddress",
"type": "address"
},
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "uints",
"type": "uint256[]"
}
],
"name": "createFixedRate",
"outputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "ssParams",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "swapFees",
"type": "uint256[]"
},
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
}
],
"name": "deployPool",
"outputs": [
{
"internalType": "address",
"name": "pool",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getDispensers",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getERC721Address",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getFixedRates",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
},
{
"internalType": "bytes32",
"name": "id",
"type": "bytes32"
}
],
"internalType": "struct ERC20Template.fixedRate[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getId",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "getPaymentCollector",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getPermissions",
"outputs": [
{
"components": [
{
"internalType": "bool",
"name": "minter",
"type": "bool"
},
{
"internalType": "bool",
"name": "paymentManager",
"type": "bool"
}
],
"internalType": "struct ERC20Roles.RolesERC20",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPools",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPublishingMarketFee",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string[]",
"name": "strings_",
"type": "string[]"
},
{
"internalType": "address[]",
"name": "addresses_",
"type": "address[]"
},
{
"internalType": "address[]",
"name": "factoryAddresses_",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "uints_",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "bytes_",
"type": "bytes[]"
}
],
"name": "initialize",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "isERC20Deployer",
"outputs": [
{
"internalType": "bool",
"name": "deployer",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "isInitialized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "isMinter",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "permissions",
"outputs": [
{
"internalType": "bool",
"name": "minter",
"type": "bool"
},
{
"internalType": "bool",
"name": "paymentManager",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "permit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_minter",
"type": "address"
}
],
"name": "removeMinter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_paymentManager",
"type": "address"
}
],
"name": "removePaymentManager",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "orderTxId",
"type": "bytes32"
},
{
"components": [
{
"internalType": "address",
"name": "providerFeeAddress",
"type": "address"
},
{
"internalType": "address",
"name": "providerFeeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "providerFeeAmount",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "validUntil",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "providerData",
"type": "bytes"
}
],
"internalType": "struct ERC20Template.providerFees",
"name": "_providerFees",
"type": "tuple"
}
],
"name": "reuseOrder",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "router",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "_value",
"type": "bytes"
}
],
"name": "setData",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newPaymentCollector",
"type": "address"
}
],
"name": "setPaymentCollector",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_publishMarketFeeAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_publishMarketFeeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_publishMarketFeeAmount",
"type": "uint256"
}
],
"name": "setPublishingMarketFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "consumer",
"type": "address"
},
{
"internalType": "uint256",
"name": "serviceIndex",
"type": "uint256"
},
{
"components": [
{
"internalType": "address",
"name": "providerFeeAddress",
"type": "address"
},
{
"internalType": "address",
"name": "providerFeeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "providerFeeAmount",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "validUntil",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "providerData",
"type": "bytes"
}
],
"internalType": "struct ERC20Template.providerFees",
"name": "_providerFees",
"type": "tuple"
}
],
"name": "startOrder",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "withdrawETH",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
],
"bytecode": "0x6080604052600b805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d9160039162000091565b5080516200008390600490602084019062000091565b505060016007555062000174565b8280546200009f9062000137565b90600052602060002090601f016020900481019282620000c357600085556200010e565b82601f10620000de57805160ff19168380011785556200010e565b828001600101855582156200010e579182015b828111156200010e578251825591602001919060010190620000f1565b506200011c92915062000120565b5090565b5b808211156200011c576000815560010162000121565b600181811c908216806200014c57607f821691505b602082108114156200016e57634e487b7160e01b600052602260045260246000fd5b50919050565b614a5080620001846000396000f3fe6080604052600436106102ad5760003560e01c80635bfe4da011610166578063a457c2d7116100d3578063d505accf1161008f578063e487c2e81161006c578063e487c2e814610965578063ec342ad01461097a578063ef867ff414610996578063f887ea40146109b657005b8063d505accf146108f7578063dd62ed3e14610917578063e086e5ec1461095d57005b8063a457c2d71461081e578063a9059cbb1461083e578063aa271e1a1461085e578063aa492ef914610897578063ab62f0e1146108b7578063b3998be0146108d757005b80637ecebe00116101225780637ecebe001461076757806382c03da5146107945780638b96412b146107a957806395d89b41146107c957806396fb3eaf146107de578063983b2d56146107fe57005b80635bfe4da0146106a65780635d1ca631146106c6578063673a2a1f146106da57806370a08231146106ef57806379cc6790146107255780637dda231e1461074557005b8063355274ea1161021c578063397b3743116101d857806347ac7d55116101b557806347ac7d551461062f5780634f189cb21461065157806357a3a31b1461066657806357ad5ff61461068657005b8063397b3743146105b357806340c10f19146105ef57806342966c681461060f57005b8063355274ea14610509578063361fef491461051e578063363bdb461461053e5780633644e5151461055e578063392e53cd14610574578063395093511461059357005b8063191c918a1161026b578063191c918a1461043357806323b872dd1461045357806325b00243146104735780633092afd51461049357806330adf81f146104b3578063313ce567146104e757005b80627ffb78146102af57806301e88208146102e657806306fdde0314610336578063095ea7b314610358578063160a79251461038857806318160ddd14610414575b005b3480156102bb57600080fd5b50600c546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102f257600080fd5b5061031f610301366004613c51565b60056020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016102dd565b34801561034257600080fd5b5061034b6109d6565b6040516102dd9190613c9a565b34801561036457600080fd5b50610378610373366004613ccd565b610a68565b60405190151581526020016102dd565b34801561039457600080fd5b506103f56103a3366004613c51565b6040805180820190915260008082526020820152506001600160a01b031660009081526005602090815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b60408051825115158152602092830151151592810192909252016102dd565b34801561042057600080fd5b506002545b6040519081526020016102dd565b34801561043f57600080fd5b506102ad61044e366004613d07565b610a7e565b34801561045f57600080fd5b5061037861046e366004613d66565b610c5a565b34801561047f57600080fd5b506102ad61048e366004613c51565b610d06565b34801561049f57600080fd5b506102ad6104ae366004613c51565b610da0565b3480156104bf57600080fd5b506104257f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b3480156104f357600080fd5b5060125b60405160ff90911681526020016102dd565b34801561051557600080fd5b50600a54610425565b34801561052a57600080fd5b506102ad610539366004613dc0565b610e37565b34801561054a57600080fd5b506102ad610559366004613e06565b610eb5565b34801561056a57600080fd5b5061042560115481565b34801561058057600080fd5b50600b54600160a01b900460ff16610378565b34801561059f57600080fd5b506103786105ae366004613ccd565b611210565b3480156105bf57600080fd5b50600e54600f54601054604080516001600160a01b039485168152939092166020840152908201526060016102dd565b3480156105fb57600080fd5b506102ad61060a366004613ccd565b61124c565b34801561061b57600080fd5b506102ad61062a366004613e5e565b61131d565b34801561063b57600080fd5b50610644611327565b6040516102dd9190613ebb565b34801561065d57600080fd5b506102ad611388565b34801561067257600080fd5b506102ad610681366004613c51565b61146f565b34801561069257600080fd5b506102ad6106a1366004613d66565b6115b1565b3480156106b257600080fd5b506102c96106c1366004614006565b611705565b3480156106d257600080fd5b5060016104f7565b3480156106e657600080fd5b50610644611b0a565b3480156106fb57600080fd5b5061042561070a366004613c51565b6001600160a01b031660009081526020819052604090205490565b34801561073157600080fd5b506102ad610740366004613ccd565b611b6a565b34801561075157600080fd5b5061075a611bf0565b6040516102dd9190614083565b34801561077357600080fd5b50610425610782366004613c51565b60126020526000908152604090205481565b3480156107a057600080fd5b506102ad611c65565b3480156107b557600080fd5b506104256107c43660046140db565b611cbf565b3480156107d557600080fd5b5061034b611f4f565b3480156107ea57600080fd5b506103786107f9366004613c51565b611f5e565b34801561080a57600080fd5b506102ad610819366004613c51565b611fd9565b34801561082a57600080fd5b50610378610839366004613ccd565b612070565b34801561084a57600080fd5b50610378610859366004613ccd565b612109565b34801561086a57600080fd5b50610378610879366004613c51565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156108a357600080fd5b506102ad6108b2366004613c51565b612116565b3480156108c357600080fd5b506102ad6108d2366004614146565b6121ad565b3480156108e357600080fd5b506103786108f2366004614202565b6122de565b34801561090357600080fd5b506102ad610912366004614308565b612418565b34801561092357600080fd5b50610425610932366004614376565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102ad61262a565b34801561097157600080fd5b506102c961266a565b34801561098657600080fd5b50610425670de0b6b3a764000081565b3480156109a257600080fd5b506102c96109b1366004613e5e565b6126ff565b3480156109c257600080fd5b506013546102c9906001600160a01b031681565b6060600880546109e5906143af565b80601f0160208091040260200160405190810160405280929190818152602001828054610a11906143af565b8015610a5e5780601f10610a3357610100808354040283529160200191610a5e565b820191906000526020600020905b815481529060010190602001808311610a4157829003601f168201915b5050505050905090565b6000610a75338484612729565b50600192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec91906143e4565b60200151610b155760405162461bcd60e51b8152600401610b0c90614468565b60405180910390fd5b60026007541415610b385760405162461bcd60e51b8152600401610b0c9061449d565b6002600755601354604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050508115610bcd57610bcd8561284d565b601680546001810182556000919091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180546001600160a01b0319166001600160a01b0387169081179091556040519081527fa31ffd41531537eb31bfd827a3f5372b5f62bf4dd8579e5354b280dc58490e709060200160405180910390a150506001600755505050565b6000610c6784848461294f565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610cec5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b0c565b610cf98533858403612729565b60019150505b9392505050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7491906143e4565b60200151610d945760405162461bcd60e51b8152600401610b0c90614468565b610d9d81612b1f565b50565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0e91906143e4565b60200151610e2e5760405162461bcd60e51b8152600401610b0c90614468565b610d9d81612b80565b60026007541415610e5a5760405162461bcd60e51b8152600401610b0c9061449d565b600260075560408051838152336020820152428183015243606082015290517f526e31449ea46e2aecf9b480c8d7dfa191348ef74ffdf75b445a6ab726daa6ff9181900360800190a1610eac81612be0565b50506001600755565b60026007541415610ed85760405162461bcd60e51b8152600401610b0c9061449d565b600260075533600090815260208190526040812054670de0b6b3a76400009190821115610f535760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f7567682064617461746f6b656e7320746f207374617274204f604482015263393232b960e11b6064820152608401610b0c565b600e5460408051338152602081018590529081018690524260608201524360808201526001600160a01b03918216918716907fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9060a00160405180910390a36000601054118015610fce5750600f546001600160a01b031615155b8015610fe45750600e546001600160a01b031615155b1561119e57601054600f54611008916001600160a01b039091169033903090612f72565b60135460408051637d28354d60e01b815290516000926001600160a01b031691637d28354d9160048083019260209291908290030181865afa158015611052573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107691906144d4565b905080156110a8576110a5670de0b6b3a764000061109f83601054612fdd90919063ffffffff16565b90612fe9565b91505b600e546010546110d9916001600160a01b0316906110c69085612ff5565b600f546001600160a01b03169190613001565b600f54600e546010546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49061111e9086612ff5565b60405190815260200160405180910390a3811561119c57600b54600f54611152916001600160a01b03918216911684613001565b600f54600b546040518481526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b505b6111a783612be0565b6111b86111b261266a565b83612109565b6112045760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f2073656e6420445420746f207075626c697368657200006044820152606401610b0c565b50506001600755505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a75918590611247908690614503565b612729565b3360009081526005602052604090205460ff166112ab5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610b0c565b600a546112c1826112bb60025490565b90613031565b111561130f5760405162461bcd60e51b815260206004820152601f60248201527f44617461746f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610b0c565b611319828261303d565b5050565b610d9d338261311c565b60606016805480602002602001604051908101604052809291908181526020018280548015610a5e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611361575050505050905090565b600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156113d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f5919061451b565b6001600160a01b0316336001600160a01b0316146114555760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610b0c565b61145d61326a565b600d80546001600160a01b0319169055565b33600090815260056020526040902054610100900460ff16806115005750600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af11580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb91906143e4565b602001515b6115605760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b6064820152608401610b0c565b61156981613319565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600e546001600160a01b0316331461161e5760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610b0c565b6001600160a01b0383166116855760405162461bcd60e51b815260206004820152602860248201527f496e76616c6964205f7075626c6973684d61726b657446656541646472657373604482015267206164647265737360c01b6064820152608401610b0c565b600e80546001600160a01b038581166001600160a01b03199283168117909355600f80549186169190921681179091556010839055604080513381526020810193909352820152606081018290527fe0b85b6f04fa914cf57f6401c5672a83a32b1c388d194c3d78e17f2897d46f439060800160405180910390a1505050565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af1158015611750573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177491906143e4565b602001516117945760405162461bcd60e51b8152600401610b0c90614468565b600260075414156117b75760405162461bcd60e51b8152600401610b0c9061449d565b60026007556117c560025490565b1561181e5760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b6064820152608401610b0c565b6118418260008151811061183457611834614538565b602002602001015161284d565b601360009054906101000a90046001600160a01b03166001600160a01b031663510f34656040518163ffffffff1660e01b8152600401602060405180830381865afa158015611894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b891906144d4565b846003815181106118cb576118cb614538565b602002602001015110156119615760405162461bcd60e51b815260206004820152605160248201527f455243323054656d706c6174653a2056657374696e6720706572696f6420746f60448201527f6f206c6f772e2053656520466163746f7279526f757465722e6d696e56657374606482015270696e67506572696f64496e426c6f636b7360781b608482015260a401610b0c565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061199957611999614538565b60209081029190910101516001600160a01b0390811690915260135460405163ee3bc63560e01b8152929350169063ee3bc635906119e190849089908990899060040161457e565b6020604051808303816000875af1158015611a00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a24919061451b565b6014805460018101825560009182527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b0319166001600160a01b03841617905584519193507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b9679184918691611aa557611aa5614538565b602002602001015185600181518110611ac057611ac0614538565b6020026020010151604051611af5939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a15060016007559392505050565b60606014805480602002602001604051908101604052809291908181526020018280548015610a5e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611361575050505050905090565b6000611b768333610932565b905081811015611bd45760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610b0c565b611be18333848403612729565b611beb838361311c565b505050565b60606015805480602002602001604051908101604052809291908181526020016000905b82821015611c5c576000848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101611c14565b50505050905090565b600c546001600160a01b031633146114555760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610b0c565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af1158015611d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2e91906143e4565b60200151611d4e5760405162461bcd60e51b8152600401610b0c90614468565b60026007541415611d715760405162461bcd60e51b8152600401610b0c9061449d565b6002600755601354604051638244937560e01b81526001600160a01b0390911690638244937590611daa908790879087906004016145e9565b6020604051808303816000875af1158015611dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ded91906144d4565b9050600082600481518110611e0457611e04614538565b60200260200101511115611e1b57611e1b8461284d565b82600081518110611e2e57611e2e614538565b60200260200101516001600160a01b031683600181518110611e5257611e52614538565b60200260200101516001600160a01b03167fb3fac3ae95956dbac74e63ba8dac94081832395c8788e3049c900a7732f348058387604051611ea69291909182526001600160a01b0316602082015260400190565b60405180910390a3604080518082019091526001600160a01b03948516815260208101828152601580546001808201835560009290925292517f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475600290940293840180546001600160a01b0319169190981617909655517f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec476909101556007939093555090919050565b6060600980546109e5906143af565b600c5460405163160a792560e01b81526001600160a01b038381166004830152600092169063160a7925906024016080604051808303816000875af1158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf91906143e4565b6020015192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906143e4565b602001516120675760405162461bcd60e51b8152600401610b0c90614468565b610d9d8161284d565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156120f25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b0c565b6120ff3385858403612729565b5060019392505050565b6000610a7533848461294f565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612160573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218491906143e4565b602001516121a45760405162461bcd60e51b8152600401610b0c90614468565b610d9d8161333b565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af11580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b91906143e4565b6020015161223b5760405162461bcd60e51b8152600401610b0c90614468565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600c546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906122a790849087908790600401614652565b600060405180830381600087803b1580156122c157600080fd5b505af11580156122d5573d6000803e3d6000fd5b50505050505050565b600b54600090600160a01b900460ff16156123555760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610b0c565b6124096123628b8d6146cc565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061240492508991508a9050614753565b613449565b9b9a5050505050505050505050565b4384101561245b5760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610b0c565b6011546001600160a01b038816600090815260126020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876124ae836147ce565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161252792919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612592573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906125c85750886001600160a01b0316816001600160a01b0316145b6126145760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610b0c565b61261f898989612729565b505050505050505050565b61263261266a565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610d9d573d6000803e3d6000fd5b600d546000906001600160a01b03166126ef57600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea919061451b565b905090565b50600d546001600160a01b031690565b6006818154811061270f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b03831661278b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0c565b6001600160a01b0382166127ec5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b0c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff16156128b75760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610b0c565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b0383166129b35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b0c565b6001600160a01b038216612a155760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b0c565b6001600160a01b03831660009081526020819052604090205481811015612a8d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b0c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612ac4908490614503565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b1091815260200190565b60405180910390a35b50505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906129439042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906129439042904390918252602082015260400190565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152600081612c2460e08501856147e9565b612c316020870187613c51565b612c416040880160208901613c51565b87604001358860c00135604051602001612c609695949392919061482f565b60405160208183030381529060405280519060200120604051602001612c8792919061486d565b60408051601f19818403018152919052805160209091012090506000600182612cb6608087016060880161488f565b6040805160008152602081018083529390935260ff90911690820152608080870135606083015260a08088013591830191909152016020604051602081039080840390855afa158015612d0d573d6000803e3d6000fd5b5050604051601f1901519150612d2890506020850185613c51565b6001600160a01b0316816001600160a01b031614612d7f5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070726f76696465722066656560601b6044820152606401610b0c565b612d8f6040850160208601613c51565b6001600160a01b0316612da56020860186613c51565b6001600160a01b03167f22bdc88918efde2160206f0b5314bae23de0ae7fd1e9e7853d53178e32355a876040870135612de160e08901896147e9565b612df160808b0160608c0161488f565b8a608001358b60a001358c60c00135604051612e1397969594939291906148aa565b60405180910390a360008460400135118015612e4857506000612e3c6040860160208701613c51565b6001600160a01b031614155b8015612e6a57506000612e5e6020860186613c51565b6001600160a01b031614155b15612b195760135460408051636c45e88160e01b815290516000926001600160a01b031691636c45e8819160048083019260209291908290030181865afa158015612eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edd91906144d4565b905060008115612f0457612f01670de0b6b3a764000061109f604089013585612fdd565b90505b6000612f14604088013583612ff5565b9050612f4933612f2760208a018a613c51565b83612f3860408c0160208d01613c51565b6001600160a01b0316929190612f72565b81156122d557600b546122d59033906001600160a01b031684612f3860408c0160208d01613c51565b6040516001600160a01b0380851660248301528316604482015260648101829052612b199085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261393b565b6000610cff82846148ed565b6000610cff828461490c565b6000610cff828461492e565b6040516001600160a01b038316602482015260448101829052611beb90849063a9059cbb60e01b90606401612fa6565b6000610cff8284614503565b6001600160a01b0382166130935760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b0c565b80600260008282546130a59190614503565b90915550506001600160a01b038216600090815260208190526040812080548392906130d2908490614503565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661317c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b0c565b6001600160a01b038216600090815260208190526040902054818110156131f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b0c565b6001600160a01b038316600090815260208190526040812083830390556002805484929061321f90849061492e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b6006548110156132d0576000600560006006848154811061329057613290614538565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff1916905550806132c8816147ce565b91505061326d565b506132dd60066000613b85565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff16156133b55760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610b0c565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612943565b6000808460008151811061345f5761345f614538565b6020026020010151905060008560018151811061347e5761347e614538565b6020026020010151905060006001600160a01b0316826001600160a01b031614156135005760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610b0c565b6001600160a01b03811661357c5760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f2061646472657373000000006064820152608401610b0c565b8460008151811061358f5761358f614538565b6020026020010151600014156135f35760405162461bcd60e51b8152602060048201526024808201527f44617461746f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b6064820152608401610b0c565b8460008151811061360657613606614538565b6020026020010151600a819055508760008151811061362757613627614538565b602002602001015160089080519060200190613644929190613ba3565b508760018151811061365857613658614538565b602002602001015160099080519060200190613675929190613ba3565b50600c80546001600160a01b0319166001600160a01b0384161790558551869060029081106136a6576136a6614538565b6020908102919091010151601380546001600160a01b039283166001600160a01b0319909116179055600b80546001600160a81b03191691831691909117600160a01b179055865161370390889060009061183457611834614538565b60006001600160a01b03168760018151811061372157613721614538565b60200260200101516001600160a01b0316146137cb5761375a8760018151811061374d5761374d614538565b6020026020010151613319565b8660018151811061376d5761376d614538565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516137c2929190918252602082015260400190565b60405180910390a35b866002815181106137de576137de614538565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508660038151811061381f5761381f614538565b6020026020010151600f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460018151811061386057613860614538565b602002602001015160108190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60086040516138a39190614945565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206011555050600b54600160a01b900460ff16979650505050505050565b6000613990826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a0d9092919063ffffffff16565b805190915015611beb57808060200190518101906139ae91906149e1565b611beb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b0c565b6060613a1c8484600085613a24565b949350505050565b606082471015613a855760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b0c565b843b613ad35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b0c565b600080866001600160a01b03168587604051613aef91906149fe565b60006040518083038185875af1925050503d8060008114613b2c576040519150601f19603f3d011682016040523d82523d6000602084013e613b31565b606091505b5091509150613b41828286613b4c565b979650505050505050565b60608315613b5b575081610cff565b825115613b6b5782518084602001fd5b8160405162461bcd60e51b8152600401610b0c9190613c9a565b5080546000825590600052602060002090810190610d9d9190613c27565b828054613baf906143af565b90600052602060002090601f016020900481019282613bd15760008555613c17565b82601f10613bea57805160ff1916838001178555613c17565b82800160010185558215613c17579182015b82811115613c17578251825591602001919060010190613bfc565b50613c23929150613c27565b5090565b5b80821115613c235760008155600101613c28565b6001600160a01b0381168114610d9d57600080fd5b600060208284031215613c6357600080fd5b8135610cff81613c3c565b60005b83811015613c89578181015183820152602001613c71565b83811115612b195750506000910152565b6020815260008251806020840152613cb9816040850160208701613c6e565b601f01601f19169190910160400192915050565b60008060408385031215613ce057600080fd5b8235613ceb81613c3c565b946020939093013593505050565b8015158114610d9d57600080fd5b600080600080600060a08688031215613d1f57600080fd5b8535613d2a81613c3c565b945060208601359350604086013592506060860135613d4881613cf9565b91506080860135613d5881613c3c565b809150509295509295909350565b600080600060608486031215613d7b57600080fd5b8335613d8681613c3c565b92506020840135613d9681613c3c565b929592945050506040919091013590565b60006101008284031215613dba57600080fd5b50919050565b60008060408385031215613dd357600080fd5b8235915060208301356001600160401b03811115613df057600080fd5b613dfc85828601613da7565b9150509250929050565b600080600060608486031215613e1b57600080fd5b8335613e2681613c3c565b92506020840135915060408401356001600160401b03811115613e4857600080fd5b613e5486828701613da7565b9150509250925092565b600060208284031215613e7057600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613eb05781516001600160a01b031687529582019590820190600101613e8b565b509495945050505050565b602081526000610cff6020830184613e77565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f0c57613f0c613ece565b604052919050565b60006001600160401b03821115613f2d57613f2d613ece565b5060051b60200190565b600082601f830112613f4857600080fd5b81356020613f5d613f5883613f14565b613ee4565b82815260059290921b84018101918181019086841115613f7c57600080fd5b8286015b84811015613f975780358352918301918301613f80565b509695505050505050565b600082601f830112613fb357600080fd5b81356020613fc3613f5883613f14565b82815260059290921b84018101918181019086841115613fe257600080fd5b8286015b84811015613f97578035613ff981613c3c565b8352918301918301613fe6565b60008060006060848603121561401b57600080fd5b83356001600160401b038082111561403257600080fd5b61403e87838801613f37565b9450602086013591508082111561405457600080fd5b61406087838801613f37565b9350604086013591508082111561407657600080fd5b50613e5486828701613fa2565b602080825282518282018190526000919060409081850190868401855b828110156140ce57815180516001600160a01b031685528601518685015292840192908501906001016140a0565b5091979650505050505050565b6000806000606084860312156140f057600080fd5b83356140fb81613c3c565b925060208401356001600160401b038082111561411757600080fd5b61412387838801613fa2565b9350604086013591508082111561413957600080fd5b50613e5486828701613f37565b6000806020838503121561415957600080fd5b82356001600160401b038082111561417057600080fd5b818501915085601f83011261418457600080fd5b81358181111561419357600080fd5b8660208285010111156141a557600080fd5b60209290920196919550909350505050565b60008083601f8401126141c957600080fd5b5081356001600160401b038111156141e057600080fd5b6020830191508360208260051b85010111156141fb57600080fd5b9250929050565b60008060008060008060008060008060a08b8d03121561422157600080fd5b8a356001600160401b038082111561423857600080fd5b6142448e838f016141b7565b909c509a5060208d013591508082111561425d57600080fd5b6142698e838f016141b7565b909a50985060408d013591508082111561428257600080fd5b61428e8e838f016141b7565b909850965060608d01359150808211156142a757600080fd5b6142b38e838f016141b7565b909650945060808d01359150808211156142cc57600080fd5b506142d98d828e016141b7565b915080935050809150509295989b9194979a5092959850565b803560ff8116811461430357600080fd5b919050565b600080600080600080600060e0888a03121561432357600080fd5b873561432e81613c3c565b9650602088013561433e81613c3c565b9550604088013594506060880135935061435a608089016142f2565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561438957600080fd5b823561439481613c3c565b915060208301356143a481613c3c565b809150509250929050565b600181811c908216806143c357607f821691505b60208210811415613dba57634e487b7160e01b600052602260045260246000fd5b6000608082840312156143f657600080fd5b604051608081018181106001600160401b038211171561441857614418613ece565b604052825161442681613cf9565b8152602083015161443681613cf9565b6020820152604083015161444981613cf9565b6040820152606083015161445c81613cf9565b60608201529392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000602082840312156144e657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115614516576145166144ed565b500190565b60006020828403121561452d57600080fd5b8151610cff81613c3c565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015613eb057815187529582019590820190600101614562565b60008186825b60028110156145ac5781516001600160a01b0316835260209283019290910190600101614584565b50505060a060408301526145c360a083018661454e565b82810360608401526145d5818661454e565b90508281036080840152613b418185613e77565b6001600160a01b038416815260606020820181905260009061460d90830185613e77565b828103604084015261461f818561454e565b9695505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b83815260406020820152600061466c604083018486614629565b95945050505050565b60006001600160401b0383111561468e5761468e613ece565b6146a1601f8401601f1916602001613ee4565b90508281528383830111156146b557600080fd5b828260208301376000602084830101529392505050565b60006146da613f5884613f14565b80848252602080830192508560051b8501368111156146f857600080fd5b855b818110156147475780356001600160401b038111156147195760008081fd5b870136601f82011261472b5760008081fd5b614739368235868401614675565b8652509382019382016146fa565b50919695505050505050565b6000614761613f5884613f14565b80848252602080830192508560051b85013681111561477f57600080fd5b855b818110156147475780356001600160401b038111156147a05760008081fd5b870136601f8201126147b25760008081fd5b6147c0368235868401614675565b865250938201938201614781565b60006000198214156147e2576147e26144ed565b5060010190565b6000808335601e1984360301811261480057600080fd5b8301803591506001600160401b0382111561481a57600080fd5b6020019150368190038213156141fb57600080fd5b858782376bffffffffffffffffffffffff19606095861b8116969091019586529290931b909116601484015260288301526048820152606801919050565b6000835161487f818460208801613c6e565b9190910191825250602001919050565b6000602082840312156148a157600080fd5b610cff826142f2565b87815260c0602082015260006148c460c08301888a614629565b905060ff861660408301528460608301528360808301528260a083015298975050505050505050565b6000816000190483118215151615614907576149076144ed565b500290565b60008261492957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614940576149406144ed565b500390565b600080835481600182811c91508083168061496157607f831692505b602080841082141561498157634e487b7160e01b86526022600452602486fd5b81801561499557600181146149a6576149d3565b60ff198616895284890196506149d3565b60008a81526020902060005b868110156149cb5781548b8201529085019083016149b2565b505084890196505b509498975050505050505050565b6000602082840312156149f357600080fd5b8151610cff81613cf9565b60008251614a10818460208701613c6e565b919091019291505056fea2646970667358221220ae14b578eac9366b5200d90d00f539d0e961d3887b597d15704e009bdfa4e98264736f6c634300080a0033",
"deployedBytecode": "0x6080604052600436106102ad5760003560e01c80635bfe4da011610166578063a457c2d7116100d3578063d505accf1161008f578063e487c2e81161006c578063e487c2e814610965578063ec342ad01461097a578063ef867ff414610996578063f887ea40146109b657005b8063d505accf146108f7578063dd62ed3e14610917578063e086e5ec1461095d57005b8063a457c2d71461081e578063a9059cbb1461083e578063aa271e1a1461085e578063aa492ef914610897578063ab62f0e1146108b7578063b3998be0146108d757005b80637ecebe00116101225780637ecebe001461076757806382c03da5146107945780638b96412b146107a957806395d89b41146107c957806396fb3eaf146107de578063983b2d56146107fe57005b80635bfe4da0146106a65780635d1ca631146106c6578063673a2a1f146106da57806370a08231146106ef57806379cc6790146107255780637dda231e1461074557005b8063355274ea1161021c578063397b3743116101d857806347ac7d55116101b557806347ac7d551461062f5780634f189cb21461065157806357a3a31b1461066657806357ad5ff61461068657005b8063397b3743146105b357806340c10f19146105ef57806342966c681461060f57005b8063355274ea14610509578063361fef491461051e578063363bdb461461053e5780633644e5151461055e578063392e53cd14610574578063395093511461059357005b8063191c918a1161026b578063191c918a1461043357806323b872dd1461045357806325b00243146104735780633092afd51461049357806330adf81f146104b3578063313ce567146104e757005b80627ffb78146102af57806301e88208146102e657806306fdde0314610336578063095ea7b314610358578063160a79251461038857806318160ddd14610414575b005b3480156102bb57600080fd5b50600c546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102f257600080fd5b5061031f610301366004613c51565b60056020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016102dd565b34801561034257600080fd5b5061034b6109d6565b6040516102dd9190613c9a565b34801561036457600080fd5b50610378610373366004613ccd565b610a68565b60405190151581526020016102dd565b34801561039457600080fd5b506103f56103a3366004613c51565b6040805180820190915260008082526020820152506001600160a01b031660009081526005602090815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b60408051825115158152602092830151151592810192909252016102dd565b34801561042057600080fd5b506002545b6040519081526020016102dd565b34801561043f57600080fd5b506102ad61044e366004613d07565b610a7e565b34801561045f57600080fd5b5061037861046e366004613d66565b610c5a565b34801561047f57600080fd5b506102ad61048e366004613c51565b610d06565b34801561049f57600080fd5b506102ad6104ae366004613c51565b610da0565b3480156104bf57600080fd5b506104257f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b3480156104f357600080fd5b5060125b60405160ff90911681526020016102dd565b34801561051557600080fd5b50600a54610425565b34801561052a57600080fd5b506102ad610539366004613dc0565b610e37565b34801561054a57600080fd5b506102ad610559366004613e06565b610eb5565b34801561056a57600080fd5b5061042560115481565b34801561058057600080fd5b50600b54600160a01b900460ff16610378565b34801561059f57600080fd5b506103786105ae366004613ccd565b611210565b3480156105bf57600080fd5b50600e54600f54601054604080516001600160a01b039485168152939092166020840152908201526060016102dd565b3480156105fb57600080fd5b506102ad61060a366004613ccd565b61124c565b34801561061b57600080fd5b506102ad61062a366004613e5e565b61131d565b34801561063b57600080fd5b50610644611327565b6040516102dd9190613ebb565b34801561065d57600080fd5b506102ad611388565b34801561067257600080fd5b506102ad610681366004613c51565b61146f565b34801561069257600080fd5b506102ad6106a1366004613d66565b6115b1565b3480156106b257600080fd5b506102c96106c1366004614006565b611705565b3480156106d257600080fd5b5060016104f7565b3480156106e657600080fd5b50610644611b0a565b3480156106fb57600080fd5b5061042561070a366004613c51565b6001600160a01b031660009081526020819052604090205490565b34801561073157600080fd5b506102ad610740366004613ccd565b611b6a565b34801561075157600080fd5b5061075a611bf0565b6040516102dd9190614083565b34801561077357600080fd5b50610425610782366004613c51565b60126020526000908152604090205481565b3480156107a057600080fd5b506102ad611c65565b3480156107b557600080fd5b506104256107c43660046140db565b611cbf565b3480156107d557600080fd5b5061034b611f4f565b3480156107ea57600080fd5b506103786107f9366004613c51565b611f5e565b34801561080a57600080fd5b506102ad610819366004613c51565b611fd9565b34801561082a57600080fd5b50610378610839366004613ccd565b612070565b34801561084a57600080fd5b50610378610859366004613ccd565b612109565b34801561086a57600080fd5b50610378610879366004613c51565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156108a357600080fd5b506102ad6108b2366004613c51565b612116565b3480156108c357600080fd5b506102ad6108d2366004614146565b6121ad565b3480156108e357600080fd5b506103786108f2366004614202565b6122de565b34801561090357600080fd5b506102ad610912366004614308565b612418565b34801561092357600080fd5b50610425610932366004614376565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102ad61262a565b34801561097157600080fd5b506102c961266a565b34801561098657600080fd5b50610425670de0b6b3a764000081565b3480156109a257600080fd5b506102c96109b1366004613e5e565b6126ff565b3480156109c257600080fd5b506013546102c9906001600160a01b031681565b6060600880546109e5906143af565b80601f0160208091040260200160405190810160405280929190818152602001828054610a11906143af565b8015610a5e5780601f10610a3357610100808354040283529160200191610a5e565b820191906000526020600020905b815481529060010190602001808311610a4157829003601f168201915b5050505050905090565b6000610a75338484612729565b50600192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec91906143e4565b60200151610b155760405162461bcd60e51b8152600401610b0c90614468565b60405180910390fd5b60026007541415610b385760405162461bcd60e51b8152600401610b0c9061449d565b6002600755601354604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b505050508115610bcd57610bcd8561284d565b601680546001810182556000919091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180546001600160a01b0319166001600160a01b0387169081179091556040519081527fa31ffd41531537eb31bfd827a3f5372b5f62bf4dd8579e5354b280dc58490e709060200160405180910390a150506001600755505050565b6000610c6784848461294f565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610cec5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b0c565b610cf98533858403612729565b60019150505b9392505050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7491906143e4565b60200151610d945760405162461bcd60e51b8152600401610b0c90614468565b610d9d81612b1f565b50565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0e91906143e4565b60200151610e2e5760405162461bcd60e51b8152600401610b0c90614468565b610d9d81612b80565b60026007541415610e5a5760405162461bcd60e51b8152600401610b0c9061449d565b600260075560408051838152336020820152428183015243606082015290517f526e31449ea46e2aecf9b480c8d7dfa191348ef74ffdf75b445a6ab726daa6ff9181900360800190a1610eac81612be0565b50506001600755565b60026007541415610ed85760405162461bcd60e51b8152600401610b0c9061449d565b600260075533600090815260208190526040812054670de0b6b3a76400009190821115610f535760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f7567682064617461746f6b656e7320746f207374617274204f604482015263393232b960e11b6064820152608401610b0c565b600e5460408051338152602081018590529081018690524260608201524360808201526001600160a01b03918216918716907fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9060a00160405180910390a36000601054118015610fce5750600f546001600160a01b031615155b8015610fe45750600e546001600160a01b031615155b1561119e57601054600f54611008916001600160a01b039091169033903090612f72565b60135460408051637d28354d60e01b815290516000926001600160a01b031691637d28354d9160048083019260209291908290030181865afa158015611052573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107691906144d4565b905080156110a8576110a5670de0b6b3a764000061109f83601054612fdd90919063ffffffff16565b90612fe9565b91505b600e546010546110d9916001600160a01b0316906110c69085612ff5565b600f546001600160a01b03169190613001565b600f54600e546010546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49061111e9086612ff5565b60405190815260200160405180910390a3811561119c57600b54600f54611152916001600160a01b03918216911684613001565b600f54600b546040518481526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b505b6111a783612be0565b6111b86111b261266a565b83612109565b6112045760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f2073656e6420445420746f207075626c697368657200006044820152606401610b0c565b50506001600755505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a75918590611247908690614503565b612729565b3360009081526005602052604090205460ff166112ab5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610b0c565b600a546112c1826112bb60025490565b90613031565b111561130f5760405162461bcd60e51b815260206004820152601f60248201527f44617461746f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610b0c565b611319828261303d565b5050565b610d9d338261311c565b60606016805480602002602001604051908101604052809291908181526020018280548015610a5e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611361575050505050905090565b600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156113d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f5919061451b565b6001600160a01b0316336001600160a01b0316146114555760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610b0c565b61145d61326a565b600d80546001600160a01b0319169055565b33600090815260056020526040902054610100900460ff16806115005750600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af11580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb91906143e4565b602001515b6115605760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b6064820152608401610b0c565b61156981613319565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600e546001600160a01b0316331461161e5760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610b0c565b6001600160a01b0383166116855760405162461bcd60e51b815260206004820152602860248201527f496e76616c6964205f7075626c6973684d61726b657446656541646472657373604482015267206164647265737360c01b6064820152608401610b0c565b600e80546001600160a01b038581166001600160a01b03199283168117909355600f80549186169190921681179091556010839055604080513381526020810193909352820152606081018290527fe0b85b6f04fa914cf57f6401c5672a83a32b1c388d194c3d78e17f2897d46f439060800160405180910390a1505050565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af1158015611750573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177491906143e4565b602001516117945760405162461bcd60e51b8152600401610b0c90614468565b600260075414156117b75760405162461bcd60e51b8152600401610b0c9061449d565b60026007556117c560025490565b1561181e5760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b6064820152608401610b0c565b6118418260008151811061183457611834614538565b602002602001015161284d565b601360009054906101000a90046001600160a01b03166001600160a01b031663510f34656040518163ffffffff1660e01b8152600401602060405180830381865afa158015611894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b891906144d4565b846003815181106118cb576118cb614538565b602002602001015110156119615760405162461bcd60e51b815260206004820152605160248201527f455243323054656d706c6174653a2056657374696e6720706572696f6420746f60448201527f6f206c6f772e2053656520466163746f7279526f757465722e6d696e56657374606482015270696e67506572696f64496e426c6f636b7360781b608482015260a401610b0c565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061199957611999614538565b60209081029190910101516001600160a01b0390811690915260135460405163ee3bc63560e01b8152929350169063ee3bc635906119e190849089908990899060040161457e565b6020604051808303816000875af1158015611a00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a24919061451b565b6014805460018101825560009182527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b0319166001600160a01b03841617905584519193507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b9679184918691611aa557611aa5614538565b602002602001015185600181518110611ac057611ac0614538565b6020026020010151604051611af5939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a15060016007559392505050565b60606014805480602002602001604051908101604052809291908181526020018280548015610a5e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611361575050505050905090565b6000611b768333610932565b905081811015611bd45760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610b0c565b611be18333848403612729565b611beb838361311c565b505050565b60606015805480602002602001604051908101604052809291908181526020016000905b82821015611c5c576000848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101611c14565b50505050905090565b600c546001600160a01b031633146114555760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610b0c565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af1158015611d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2e91906143e4565b60200151611d4e5760405162461bcd60e51b8152600401610b0c90614468565b60026007541415611d715760405162461bcd60e51b8152600401610b0c9061449d565b6002600755601354604051638244937560e01b81526001600160a01b0390911690638244937590611daa908790879087906004016145e9565b6020604051808303816000875af1158015611dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ded91906144d4565b9050600082600481518110611e0457611e04614538565b60200260200101511115611e1b57611e1b8461284d565b82600081518110611e2e57611e2e614538565b60200260200101516001600160a01b031683600181518110611e5257611e52614538565b60200260200101516001600160a01b03167fb3fac3ae95956dbac74e63ba8dac94081832395c8788e3049c900a7732f348058387604051611ea69291909182526001600160a01b0316602082015260400190565b60405180910390a3604080518082019091526001600160a01b03948516815260208101828152601580546001808201835560009290925292517f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475600290940293840180546001600160a01b0319169190981617909655517f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec476909101556007939093555090919050565b6060600980546109e5906143af565b600c5460405163160a792560e01b81526001600160a01b038381166004830152600092169063160a7925906024016080604051808303816000875af1158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf91906143e4565b6020015192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906143e4565b602001516120675760405162461bcd60e51b8152600401610b0c90614468565b610d9d8161284d565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156120f25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b0c565b6120ff3385858403612729565b5060019392505050565b6000610a7533848461294f565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612160573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218491906143e4565b602001516121a45760405162461bcd60e51b8152600401610b0c90614468565b610d9d8161333b565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af11580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b91906143e4565b6020015161223b5760405162461bcd60e51b8152600401610b0c90614468565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600c546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906122a790849087908790600401614652565b600060405180830381600087803b1580156122c157600080fd5b505af11580156122d5573d6000803e3d6000fd5b50505050505050565b600b54600090600160a01b900460ff16156123555760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610b0c565b6124096123628b8d6146cc565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061240492508991508a9050614753565b613449565b9b9a5050505050505050505050565b4384101561245b5760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610b0c565b6011546001600160a01b038816600090815260126020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876124ae836147ce565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161252792919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612592573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906125c85750886001600160a01b0316816001600160a01b0316145b6126145760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610b0c565b61261f898989612729565b505050505050505050565b61263261266a565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610d9d573d6000803e3d6000fd5b600d546000906001600160a01b03166126ef57600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea919061451b565b905090565b50600d546001600160a01b031690565b6006818154811061270f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b03831661278b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0c565b6001600160a01b0382166127ec5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b0c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff16156128b75760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610b0c565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b0383166129b35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b0c565b6001600160a01b038216612a155760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b0c565b6001600160a01b03831660009081526020819052604090205481811015612a8d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b0c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612ac4908490614503565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b1091815260200190565b60405180910390a35b50505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906129439042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906129439042904390918252602082015260400190565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152600081612c2460e08501856147e9565b612c316020870187613c51565b612c416040880160208901613c51565b87604001358860c00135604051602001612c609695949392919061482f565b60405160208183030381529060405280519060200120604051602001612c8792919061486d565b60408051601f19818403018152919052805160209091012090506000600182612cb6608087016060880161488f565b6040805160008152602081018083529390935260ff90911690820152608080870135606083015260a08088013591830191909152016020604051602081039080840390855afa158015612d0d573d6000803e3d6000fd5b5050604051601f1901519150612d2890506020850185613c51565b6001600160a01b0316816001600160a01b031614612d7f5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070726f76696465722066656560601b6044820152606401610b0c565b612d8f6040850160208601613c51565b6001600160a01b0316612da56020860186613c51565b6001600160a01b03167f22bdc88918efde2160206f0b5314bae23de0ae7fd1e9e7853d53178e32355a876040870135612de160e08901896147e9565b612df160808b0160608c0161488f565b8a608001358b60a001358c60c00135604051612e1397969594939291906148aa565b60405180910390a360008460400135118015612e4857506000612e3c6040860160208701613c51565b6001600160a01b031614155b8015612e6a57506000612e5e6020860186613c51565b6001600160a01b031614155b15612b195760135460408051636c45e88160e01b815290516000926001600160a01b031691636c45e8819160048083019260209291908290030181865afa158015612eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edd91906144d4565b905060008115612f0457612f01670de0b6b3a764000061109f604089013585612fdd565b90505b6000612f14604088013583612ff5565b9050612f4933612f2760208a018a613c51565b83612f3860408c0160208d01613c51565b6001600160a01b0316929190612f72565b81156122d557600b546122d59033906001600160a01b031684612f3860408c0160208d01613c51565b6040516001600160a01b0380851660248301528316604482015260648101829052612b199085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261393b565b6000610cff82846148ed565b6000610cff828461490c565b6000610cff828461492e565b6040516001600160a01b038316602482015260448101829052611beb90849063a9059cbb60e01b90606401612fa6565b6000610cff8284614503565b6001600160a01b0382166130935760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b0c565b80600260008282546130a59190614503565b90915550506001600160a01b038216600090815260208190526040812080548392906130d2908490614503565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661317c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b0c565b6001600160a01b038216600090815260208190526040902054818110156131f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b0c565b6001600160a01b038316600090815260208190526040812083830390556002805484929061321f90849061492e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b6006548110156132d0576000600560006006848154811061329057613290614538565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff1916905550806132c8816147ce565b91505061326d565b506132dd60066000613b85565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff16156133b55760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610b0c565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612943565b6000808460008151811061345f5761345f614538565b6020026020010151905060008560018151811061347e5761347e614538565b6020026020010151905060006001600160a01b0316826001600160a01b031614156135005760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610b0c565b6001600160a01b03811661357c5760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f2061646472657373000000006064820152608401610b0c565b8460008151811061358f5761358f614538565b6020026020010151600014156135f35760405162461bcd60e51b8152602060048201526024808201527f44617461746f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b6064820152608401610b0c565b8460008151811061360657613606614538565b6020026020010151600a819055508760008151811061362757613627614538565b602002602001015160089080519060200190613644929190613ba3565b508760018151811061365857613658614538565b602002602001015160099080519060200190613675929190613ba3565b50600c80546001600160a01b0319166001600160a01b0384161790558551869060029081106136a6576136a6614538565b6020908102919091010151601380546001600160a01b039283166001600160a01b0319909116179055600b80546001600160a81b03191691831691909117600160a01b179055865161370390889060009061183457611834614538565b60006001600160a01b03168760018151811061372157613721614538565b60200260200101516001600160a01b0316146137cb5761375a8760018151811061374d5761374d614538565b6020026020010151613319565b8660018151811061376d5761376d614538565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516137c2929190918252602082015260400190565b60405180910390a35b866002815181106137de576137de614538565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508660038151811061381f5761381f614538565b6020026020010151600f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460018151811061386057613860614538565b602002602001015160108190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60086040516138a39190614945565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206011555050600b54600160a01b900460ff16979650505050505050565b6000613990826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a0d9092919063ffffffff16565b805190915015611beb57808060200190518101906139ae91906149e1565b611beb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b0c565b6060613a1c8484600085613a24565b949350505050565b606082471015613a855760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b0c565b843b613ad35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b0c565b600080866001600160a01b03168587604051613aef91906149fe565b60006040518083038185875af1925050503d8060008114613b2c576040519150601f19603f3d011682016040523d82523d6000602084013e613b31565b606091505b5091509150613b41828286613b4c565b979650505050505050565b60608315613b5b575081610cff565b825115613b6b5782518084602001fd5b8160405162461bcd60e51b8152600401610b0c9190613c9a565b5080546000825590600052602060002090810190610d9d9190613c27565b828054613baf906143af565b90600052602060002090601f016020900481019282613bd15760008555613c17565b82601f10613bea57805160ff1916838001178555613c17565b82800160010185558215613c17579182015b82811115613c17578251825591602001919060010190613bfc565b50613c23929150613c27565b5090565b5b80821115613c235760008155600101613c28565b6001600160a01b0381168114610d9d57600080fd5b600060208284031215613c6357600080fd5b8135610cff81613c3c565b60005b83811015613c89578181015183820152602001613c71565b83811115612b195750506000910152565b6020815260008251806020840152613cb9816040850160208701613c6e565b601f01601f19169190910160400192915050565b60008060408385031215613ce057600080fd5b8235613ceb81613c3c565b946020939093013593505050565b8015158114610d9d57600080fd5b600080600080600060a08688031215613d1f57600080fd5b8535613d2a81613c3c565b945060208601359350604086013592506060860135613d4881613cf9565b91506080860135613d5881613c3c565b809150509295509295909350565b600080600060608486031215613d7b57600080fd5b8335613d8681613c3c565b92506020840135613d9681613c3c565b929592945050506040919091013590565b60006101008284031215613dba57600080fd5b50919050565b60008060408385031215613dd357600080fd5b8235915060208301356001600160401b03811115613df057600080fd5b613dfc85828601613da7565b9150509250929050565b600080600060608486031215613e1b57600080fd5b8335613e2681613c3c565b92506020840135915060408401356001600160401b03811115613e4857600080fd5b613e5486828701613da7565b9150509250925092565b600060208284031215613e7057600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613eb05781516001600160a01b031687529582019590820190600101613e8b565b509495945050505050565b602081526000610cff6020830184613e77565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f0c57613f0c613ece565b604052919050565b60006001600160401b03821115613f2d57613f2d613ece565b5060051b60200190565b600082601f830112613f4857600080fd5b81356020613f5d613f5883613f14565b613ee4565b82815260059290921b84018101918181019086841115613f7c57600080fd5b8286015b84811015613f975780358352918301918301613f80565b509695505050505050565b600082601f830112613fb357600080fd5b81356020613fc3613f5883613f14565b82815260059290921b84018101918181019086841115613fe257600080fd5b8286015b84811015613f97578035613ff981613c3c565b8352918301918301613fe6565b60008060006060848603121561401b57600080fd5b83356001600160401b038082111561403257600080fd5b61403e87838801613f37565b9450602086013591508082111561405457600080fd5b61406087838801613f37565b9350604086013591508082111561407657600080fd5b50613e5486828701613fa2565b602080825282518282018190526000919060409081850190868401855b828110156140ce57815180516001600160a01b031685528601518685015292840192908501906001016140a0565b5091979650505050505050565b6000806000606084860312156140f057600080fd5b83356140fb81613c3c565b925060208401356001600160401b038082111561411757600080fd5b61412387838801613fa2565b9350604086013591508082111561413957600080fd5b50613e5486828701613f37565b6000806020838503121561415957600080fd5b82356001600160401b038082111561417057600080fd5b818501915085601f83011261418457600080fd5b81358181111561419357600080fd5b8660208285010111156141a557600080fd5b60209290920196919550909350505050565b60008083601f8401126141c957600080fd5b5081356001600160401b038111156141e057600080fd5b6020830191508360208260051b85010111156141fb57600080fd5b9250929050565b60008060008060008060008060008060a08b8d03121561422157600080fd5b8a356001600160401b038082111561423857600080fd5b6142448e838f016141b7565b909c509a5060208d013591508082111561425d57600080fd5b6142698e838f016141b7565b909a50985060408d013591508082111561428257600080fd5b61428e8e838f016141b7565b909850965060608d01359150808211156142a757600080fd5b6142b38e838f016141b7565b909650945060808d01359150808211156142cc57600080fd5b506142d98d828e016141b7565b915080935050809150509295989b9194979a5092959850565b803560ff8116811461430357600080fd5b919050565b600080600080600080600060e0888a03121561432357600080fd5b873561432e81613c3c565b9650602088013561433e81613c3c565b9550604088013594506060880135935061435a608089016142f2565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561438957600080fd5b823561439481613c3c565b915060208301356143a481613c3c565b809150509250929050565b600181811c908216806143c357607f821691505b60208210811415613dba57634e487b7160e01b600052602260045260246000fd5b6000608082840312156143f657600080fd5b604051608081018181106001600160401b038211171561441857614418613ece565b604052825161442681613cf9565b8152602083015161443681613cf9565b6020820152604083015161444981613cf9565b6040820152606083015161445c81613cf9565b60608201529392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000602082840312156144e657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115614516576145166144ed565b500190565b60006020828403121561452d57600080fd5b8151610cff81613c3c565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015613eb057815187529582019590820190600101614562565b60008186825b60028110156145ac5781516001600160a01b0316835260209283019290910190600101614584565b50505060a060408301526145c360a083018661454e565b82810360608401526145d5818661454e565b90508281036080840152613b418185613e77565b6001600160a01b038416815260606020820181905260009061460d90830185613e77565b828103604084015261461f818561454e565b9695505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b83815260406020820152600061466c604083018486614629565b95945050505050565b60006001600160401b0383111561468e5761468e613ece565b6146a1601f8401601f1916602001613ee4565b90508281528383830111156146b557600080fd5b828260208301376000602084830101529392505050565b60006146da613f5884613f14565b80848252602080830192508560051b8501368111156146f857600080fd5b855b818110156147475780356001600160401b038111156147195760008081fd5b870136601f82011261472b5760008081fd5b614739368235868401614675565b8652509382019382016146fa565b50919695505050505050565b6000614761613f5884613f14565b80848252602080830192508560051b85013681111561477f57600080fd5b855b818110156147475780356001600160401b038111156147a05760008081fd5b870136601f8201126147b25760008081fd5b6147c0368235868401614675565b865250938201938201614781565b60006000198214156147e2576147e26144ed565b5060010190565b6000808335601e1984360301811261480057600080fd5b8301803591506001600160401b0382111561481a57600080fd5b6020019150368190038213156141fb57600080fd5b858782376bffffffffffffffffffffffff19606095861b8116969091019586529290931b909116601484015260288301526048820152606801919050565b6000835161487f818460208801613c6e565b9190910191825250602001919050565b6000602082840312156148a157600080fd5b610cff826142f2565b87815260c0602082015260006148c460c08301888a614629565b905060ff861660408301528460608301528360808301528260a083015298975050505050505050565b6000816000190483118215151615614907576149076144ed565b500290565b60008261492957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614940576149406144ed565b500390565b600080835481600182811c91508083168061496157607f831692505b602080841082141561498157634e487b7160e01b86526022600452602486fd5b81801561499557600181146149a6576149d3565b60ff198616895284890196506149d3565b60008a81526020902060005b868110156149cb5781548b8201529085019083016149b2565b505084890196505b509498975050505050505050565b6000602082840312156149f357600080fd5b8151610cff81613cf9565b60008251614a10818460208701613c6e565b919091019291505056fea2646970667358221220ae14b578eac9366b5200d90d00f539d0e961d3887b597d15704e009bdfa4e98264736f6c634300080a0033",
"linkReferences": {},
"deployedLinkReferences": {}
}