ocean-subgraph/abis/ERC20Template.json

1269 lines
94 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": true,
"internalType": "address",
"name": "consumeFeeAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "consumeFeeToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "consumeFeeAmount",
"type": "uint256"
}
],
"name": "ConsumeMarketFees",
"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": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "owner",
"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": 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": "serviceId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "publishMarketAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "consumeFeeMarketAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "OrderStarted",
"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": 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": "BASE_COMMUNITY_FEE_PERCENTAGE",
"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": "getERC721Address",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"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": [],
"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": [],
"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": [],
"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": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "serviceId",
"type": "uint256"
},
{
"internalType": "address",
"name": "consumeFeeAddress",
"type": "address"
},
{
"internalType": "address",
"name": "consumeFeeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "consumeFeeAmount",
"type": "uint256"
}
],
"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": "0x6080604052600a805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d916003916200008c565b508051620000839060049060208401906200008c565b5050506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b614284806200017f6000396000f3fe60806040526004361061025c5760003560e01c80635d1ca63111610143578063aa492ef9116100bb578063e086e5ec11610077578063e086e5ec146107dc578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063fda9dae71461085557005b8063aa492ef914610701578063ab62f0e114610721578063b2263a5d14610741578063b3998be014610756578063d505accf14610776578063dd62ed3e1461079657005b80638b96412b1161010a5780638b96412b1461063357806395d89b4114610653578063983b2d5614610668578063a457c2d714610688578063a9059cbb146106a8578063aa271e1a146106c857005b80635d1ca6311461058757806370a082311461059b57806379cc6790146105d15780637ecebe00146105f157806382c03da51461061e57005b8063355274ea116101d657806340c10f191161019d57806340c10f19146104d257806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635bfe4da01461056757005b8063355274ea1461042c5780633644e51514610441578063392e53cd146104575780633950935114610476578063397b37431461049657005b8063191c918a11610225578063191c918a1461035657806323b872dd1461037657806325b00243146103965780633092afd5146103b657806330adf81f146103d6578063313ce5671461040a57005b80627ffb781461025e57806301e882081461029557806306fdde03146102e5578063095ea7b31461030757806318160ddd14610337575b005b34801561026a57600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a157600080fd5b506102ce6102b0366004613813565b60056020526000908152604090205460ff8082169161010090041682565b60408051921515835290151560208301520161028c565b3480156102f157600080fd5b506102fa610875565b60405161028c9190613f57565b34801561031357600080fd5b506103276103223660046139b4565b610907565b604051901515815260200161028c565b34801561034357600080fd5b506002545b60405190815260200161028c565b34801561036257600080fd5b5061025c610371366004613a47565b61091d565b34801561038257600080fd5b50610327610391366004613886565b610a64565b3480156103a257600080fd5b5061025c6103b1366004613813565b610b0e565b3480156103c257600080fd5b5061025c6103d1366004613813565b610bbc565b3480156103e257600080fd5b506103487f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561041657600080fd5b5060125b60405160ff909116815260200161028c565b34801561043857600080fd5b50600954610348565b34801561044d57600080fd5b5061034860105481565b34801561046357600080fd5b50600a54600160a01b900460ff16610327565b34801561048257600080fd5b506103276104913660046139b4565b610c67565b3480156104a257600080fd5b50600d54600e54600f54604080516001600160a01b0394851681529390921660208401529082015260600161028c565b3480156104de57600080fd5b5061025c6104ed3660046139b4565b610ca3565b3480156104fe57600080fd5b5061025c61050d366004613d42565b610d79565b34801561051e57600080fd5b5061025c610d83565b34801561053357600080fd5b5061025c610542366004613813565b610e79565b34801561055357600080fd5b5061025c610562366004613886565b610fd5565b34801561057357600080fd5b50610278610582366004613b97565b611077565b34801561059357600080fd5b50600161041a565b3480156105a757600080fd5b506103486105b6366004613813565b6001600160a01b031660009081526020819052604090205490565b3480156105dd57600080fd5b5061025c6105ec3660046139b4565b611380565b3480156105fd57600080fd5b5061034861060c366004613813565b60116020526000908152604090205481565b34801561062a57600080fd5b5061025c611406565b34801561063f57600080fd5b5061034861064e36600461393e565b611460565b34801561065f57600080fd5b506102fa611623565b34801561067457600080fd5b5061025c610683366004613813565b611632565b34801561069457600080fd5b506103276106a33660046139b4565b6116dd565b3480156106b457600080fd5b506103276106c33660046139b4565b611776565b3480156106d457600080fd5b506103276106e3366004613813565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561070d57600080fd5b5061025c61071c366004613813565b611783565b34801561072d57600080fd5b5061025c61073c366004613c4b565b61182e565b34801561074d57600080fd5b50610348611973565b34801561076257600080fd5b50610327610771366004613aa6565b611989565b34801561078257600080fd5b5061025c6107913660046138c7565b611ac3565b3480156107a257600080fd5b506103486107b136600461384d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025c611cd5565b3480156107f057600080fd5b50610278611d15565b34801561080557600080fd5b50610348670de0b6b3a764000081565b34801561082157600080fd5b50610278610830366004613d42565b611db9565b34801561084157600080fd5b50601254610278906001600160a01b031681565b34801561086157600080fd5b5061025c6108703660046139e0565b611de3565b60606007805461088490614193565b80601f01602080910402602001604051908101604052809291908181526020018280546108b090614193565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b60006109143384846127fe565b50600192915050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561096257600080fd5b505af1158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190613cbd565b6020015115156001146109c85760405162461bcd60e51b81526004016109bf90613fac565b60405180910390fd5b601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050505081151560011415610a5d57610a5d85612922565b5050505050565b6000610a71848484612a24565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610af65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109bf565b610b0385338584036127fe565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190613cbd565b602001511515600114610bb05760405162461bcd60e51b81526004016109bf90613fac565b610bb981612bf3565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610c0157600080fd5b505af1158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613cbd565b602001511515600114610c5e5760405162461bcd60e51b81526004016109bf90613fac565b610bb981612c54565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610914918590610c9e908690614036565b6127fe565b3360009081526005602052604090205460ff161515600114610d075760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109bf565b600954610d1d82610d1760025490565b90612cb4565b1115610d6b5760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109bf565b610d758282612cc7565b5050565b610bb93382612da6565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190613830565b6001600160a01b0316336001600160a01b031614610e5f5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109bf565b610e67612ef4565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f245750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190613cbd565b6020015115156001145b610f845760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109bf565b610f8d81612fa3565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110425760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109bf565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190613cbd565b60200151151560011461111a5760405162461bcd60e51b81526004016109bf90613fac565b600254156111765760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b60648201526084016109bf565b6111998260008151811061118c5761118c6141ff565b6020026020010151612922565b62250490846003815181106111b0576111b06141ff565b6020026020010151116112175760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b60648201526084016109bf565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061124f5761124f6141ff565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc63590611297908490899089908990600401613eab565b602060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e99190613830565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b9678284600081518110611320576113206141ff565b60200260200101518560018151811061133b5761133b6141ff565b6020026020010151604051611370939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b600061138c83336107b1565b9050818110156113ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109bf565b6113f783338484036127fe565b6114018383612da6565b505050565b600b546001600160a01b03163314610e5f5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109bf565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190613cbd565b6020015115156001146115035760405162461bcd60e51b81526004016109bf90613fac565b601254604051638244937560e01b81526001600160a01b039091169063824493759061153790879087908790600401613e6b565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115899190613c32565b90506000826004815181106115a0576115a06141ff565b602002602001015111156115b7576115b784612922565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106115ec576115ec6141ff565b60200260200101516040516116149291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b60606008805461088490614193565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561167757600080fd5b505af115801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190613cbd565b6020015115156001146116d45760405162461bcd60e51b81526004016109bf90613fac565b610bb981612922565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561175f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109bf565b61176c33858584036127fe565b5060019392505050565b6000610914338484612a24565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118009190613cbd565b6020015115156001146118255760405162461bcd60e51b81526004016109bf90613fac565b610bb981612fc5565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab9190613cbd565b6020015115156001146118d05760405162461bcd60e51b81526004016109bf90613fac565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e89061193c90849087908790600401613f21565b600060405180830381600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b50505050505050565b6119866064670de0b6b3a764000061404e565b81565b600a54600090600160a01b900460ff1615611a005760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109bf565b611ab4611a0d8b8d614113565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250611aaf92508991508a9050614087565b6130d3565b9b9a5050505050505050505050565b42841015611b065760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109bf565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611b59836141ce565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611bd292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611c3d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c735750886001600160a01b0316816001600160a01b0316145b611cbf5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109bf565b611cca8989896127fe565b505050505050505050565b611cdd611d15565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610bb9573d6000803e3d6000fd5b600c546000906001600160a01b0316611da957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611d6c57600080fd5b505afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da49190613830565b905090565b50600c546001600160a01b031690565b60068181548110611dc957600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152602081905260408120548190871115611e525760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109bf565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a46000600f54118015611ed15750600e546001600160a01b031615155b8015611ee75750600d546001600160a01b031615155b1561214757600e54600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611f4257600080fd5b505af1158015611f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7a9190613c15565b611fd25760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109bf565b600f54611fe09060646135c5565b600e54600d54600f549293506001600160a01b039182169263a9059cbb929091169061200c90856135d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561205257600080fd5b505af1158015612066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208a9190613c15565b6120f05760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109bf565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49061213590856135d1565b60405190815260200160405180910390a35b60008311801561215f57506001600160a01b03841615155b801561217357506001600160a01b03851615155b1561239a576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fe9190613c15565b61224a5760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109bf565b6122558360646135c5565b91506001600160a01b03841663a9059cbb8661227186866135d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156122b757600080fd5b505af11580156122cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ef9190613c15565b61234f5760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109bf565b6001600160a01b038085169086167f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d161238886866135d1565b60405190815260200160405180910390a35b6000811180156123aa5750600082115b80156123c35750600e546001600160a01b038581169116145b80156123d757506001600160a01b03841615155b1561255f57600a546001600160a01b038086169163a9059cbb91166123fc8486612cb4565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561244257600080fd5b505af1158015612456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247a9190613c15565b6124d25760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109bf565b600a546040518281526001600160a01b038681169216907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a3600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a36127ed565b6000811180156125795750600e546001600160a01b031615155b156126ab57600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b1580156125ce57600080fd5b505af11580156125e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126069190613c15565b6126615760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109bf565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b6000821180156126c357506001600160a01b03841615155b156127ed57600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b15801561271657600080fd5b505af115801561272a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274e9190613c15565b6127a85760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109bf565b600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a35b611cca6127f8611d15565b88611776565b6001600160a01b0383166128605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109bf565b6001600160a01b0382166128c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109bf565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff161561298c5760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109bf565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b038316612a885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bf565b6001600160a01b038216612aea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bf565b6001600160a01b03831660009081526020819052604090205481811015612b625760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109bf565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b99908490614036565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612be591815260200190565b60405180910390a350505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff65890612a189042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d48090612a189042904390918252602082015260400190565b6000612cc08284614036565b9392505050565b6001600160a01b038216612d1d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109bf565b8060026000828254612d2f9190614036565b90915550506001600160a01b03821660009081526020819052604081208054839290612d5c908490614036565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612e065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109bf565b6001600160a01b03821660009081526020819052604090205481811015612e7a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109bf565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612ea9908490614070565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612f5a5760006005600060068481548110612f1a57612f1a6141ff565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612f52816141ce565b915050612ef7565b50612f67600660006135dd565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561303f5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109bf565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612a18565b600080846000815181106130e9576130e96141ff565b60200260200101519050600085600181518110613108576131086141ff565b6020026020010151905060006001600160a01b0316826001600160a01b0316141561318a5760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109bf565b6001600160a01b0381166132065760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109bf565b84600081518110613219576132196141ff565b60200260200101516000141561327d5760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109bf565b84600081518110613290576132906141ff565b6020026020010151600981905550876000815181106132b1576132b16141ff565b6020026020010151600790805190602001906132ce9291906135fb565b50876001815181106132e2576132e26141ff565b6020026020010151600890805190602001906132ff9291906135fb565b50600b80546001600160a01b0319166001600160a01b038416179055855186906002908110613330576133306141ff565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b179055865161338d90889060009061118c5761118c6141ff565b60006001600160a01b0316876001815181106133ab576133ab6141ff565b60200260200101516001600160a01b031614613455576133e4876001815181106133d7576133d76141ff565b6020026020010151612fa3565b866001815181106133f7576133f76141ff565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc424360405161344c929190918252602082015260400190565b60405180910390a35b86600281518110613468576134686141ff565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106134a9576134a96141ff565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106134ea576134ea6141ff565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600760405161352d9190613dcf565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612cc0828461404e565b6000612cc08284614070565b5080546000825590600052602060002090810190610bb9919061367f565b82805461360790614193565b90600052602060002090601f016020900481019282613629576000855561366f565b82601f1061364257805160ff191683800117855561366f565b8280016001018555821561366f579182015b8281111561366f578251825591602001919060010190613654565b5061367b92915061367f565b5090565b5b8082111561367b5760008155600101613680565b600067ffffffffffffffff8311156136ae576136ae614215565b6136c1601f8401601f1916602001613fe1565b90508281528383830111156136d557600080fd5b828260208301376000602084830101529392505050565b60008083601f8401126136fe57600080fd5b50813567ffffffffffffffff81111561371657600080fd5b6020830191508360208260051b850101111561373157600080fd5b9250929050565b600082601f83011261374957600080fd5b8135602061375e61375983614012565b613fe1565b80838252828201915082860187848660051b890101111561377e57600080fd5b60005b858110156137a65781356137948161422b565b84529284019290840190600101613781565b5090979650505050505050565b600082601f8301126137c457600080fd5b813560206137d461375983614012565b80838252828201915082860187848660051b89010111156137f457600080fd5b60005b858110156137a6578135845292840192908401906001016137f7565b60006020828403121561382557600080fd5b8135612cc08161422b565b60006020828403121561384257600080fd5b8151612cc08161422b565b6000806040838503121561386057600080fd5b823561386b8161422b565b9150602083013561387b8161422b565b809150509250929050565b60008060006060848603121561389b57600080fd5b83356138a68161422b565b925060208401356138b68161422b565b929592945050506040919091013590565b600080600080600080600060e0888a0312156138e257600080fd5b87356138ed8161422b565b965060208801356138fd8161422b565b95506040880135945060608801359350608088013560ff8116811461392157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561395357600080fd5b833561395e8161422b565b9250602084013567ffffffffffffffff8082111561397b57600080fd5b61398787838801613738565b9350604086013591508082111561399d57600080fd5b506139aa868287016137b3565b9150509250925092565b600080604083850312156139c757600080fd5b82356139d28161422b565b946020939093013593505050565b60008060008060008060c087890312156139f957600080fd5b8635613a048161422b565b955060208701359450604087013593506060870135613a228161422b565b92506080870135613a328161422b565b8092505060a087013590509295509295509295565b600080600080600060a08688031215613a5f57600080fd5b8535613a6a8161422b565b945060208601359350604086013592506060860135613a8881614240565b91506080860135613a988161422b565b809150509295509295909350565b60008060008060008060008060008060a08b8d031215613ac557600080fd5b8a3567ffffffffffffffff80821115613add57600080fd5b613ae98e838f016136ec565b909c509a5060208d0135915080821115613b0257600080fd5b613b0e8e838f016136ec565b909a50985060408d0135915080821115613b2757600080fd5b613b338e838f016136ec565b909850965060608d0135915080821115613b4c57600080fd5b613b588e838f016136ec565b909650945060808d0135915080821115613b7157600080fd5b50613b7e8d828e016136ec565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215613bac57600080fd5b833567ffffffffffffffff80821115613bc457600080fd5b613bd0878388016137b3565b94506020860135915080821115613be657600080fd5b613bf2878388016137b3565b93506040860135915080821115613c0857600080fd5b506139aa86828701613738565b600060208284031215613c2757600080fd5b8151612cc081614240565b600060208284031215613c4457600080fd5b5051919050565b60008060208385031215613c5e57600080fd5b823567ffffffffffffffff80821115613c7657600080fd5b818501915085601f830112613c8a57600080fd5b813581811115613c9957600080fd5b866020828501011115613cab57600080fd5b60209290920196919550909350505050565b600060808284031215613ccf57600080fd5b6040516080810181811067ffffffffffffffff82111715613cf257613cf2614215565b6040528251613d0081614240565b81526020830151613d1081614240565b60208201526040830151613d2381614240565b60408201526060830151613d3681614240565b60608201529392505050565b600060208284031215613d5457600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613d945781516001600160a01b031687529582019590820190600101613d6f565b509495945050505050565b600081518084526020808501945080840160005b83811015613d9457815187529582019590820190600101613db3565b600080835481600182811c915080831680613deb57607f831692505b6020808410821415613e0b57634e487b7160e01b86526022600452602486fd5b818015613e1f5760018114613e3057613e5d565b60ff19861689528489019650613e5d565b60008a81526020902060005b86811015613e555781548b820152908501908301613e3c565b505084890196505b509498975050505050505050565b6001600160a01b0384168152606060208201819052600090613e8f90830185613d5b565b8281036040840152613ea18185613d9f565b9695505050505050565b60008186825b6002811015613ed95781516001600160a01b0316835260209283019290910190600101613eb1565b50505060a06040830152613ef060a0830186613d9f565b8281036060840152613f028186613d9f565b90508281036080840152613f168185613d5b565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015613f8457858101830151858201604001528201613f68565b81811115613f96576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561400a5761400a614215565b604052919050565b600067ffffffffffffffff82111561402c5761402c614215565b5060051b60200190565b60008219821115614049576140496141e9565b500190565b60008261406b57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614082576140826141e9565b500390565b600061409561375984614012565b808482526020808301925084368760051b870111156140b357600080fd5b60005b8781101561410757813567ffffffffffffffff8111156140d557600080fd5b870136601f8201126140e657600080fd5b6140f4368235868401613694565b86525093820193908201906001016140b6565b50919695505050505050565b600061412161375984614012565b808482526020808301925084368760051b8701111561413f57600080fd5b60005b8781101561410757813567ffffffffffffffff81111561416157600080fd5b870136601f82011261417257600080fd5b614180368235868401613694565b8652509382019390820190600101614142565b600181811c908216806141a757607f821691505b602082108114156141c857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156141e2576141e26141e9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bb957600080fd5b8015158114610bb957600080fdfea26469706673582212202d86fd1a6312f0dfc70e2a07d5649bfa475307b8bd086787e2d1cbb4add62eca64736f6c63430008070033",
"deployedBytecode": "0x60806040526004361061025c5760003560e01c80635d1ca63111610143578063aa492ef9116100bb578063e086e5ec11610077578063e086e5ec146107dc578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063fda9dae71461085557005b8063aa492ef914610701578063ab62f0e114610721578063b2263a5d14610741578063b3998be014610756578063d505accf14610776578063dd62ed3e1461079657005b80638b96412b1161010a5780638b96412b1461063357806395d89b4114610653578063983b2d5614610668578063a457c2d714610688578063a9059cbb146106a8578063aa271e1a146106c857005b80635d1ca6311461058757806370a082311461059b57806379cc6790146105d15780637ecebe00146105f157806382c03da51461061e57005b8063355274ea116101d657806340c10f191161019d57806340c10f19146104d257806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635bfe4da01461056757005b8063355274ea1461042c5780633644e51514610441578063392e53cd146104575780633950935114610476578063397b37431461049657005b8063191c918a11610225578063191c918a1461035657806323b872dd1461037657806325b00243146103965780633092afd5146103b657806330adf81f146103d6578063313ce5671461040a57005b80627ffb781461025e57806301e882081461029557806306fdde03146102e5578063095ea7b31461030757806318160ddd14610337575b005b34801561026a57600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a157600080fd5b506102ce6102b0366004613813565b60056020526000908152604090205460ff8082169161010090041682565b60408051921515835290151560208301520161028c565b3480156102f157600080fd5b506102fa610875565b60405161028c9190613f57565b34801561031357600080fd5b506103276103223660046139b4565b610907565b604051901515815260200161028c565b34801561034357600080fd5b506002545b60405190815260200161028c565b34801561036257600080fd5b5061025c610371366004613a47565b61091d565b34801561038257600080fd5b50610327610391366004613886565b610a64565b3480156103a257600080fd5b5061025c6103b1366004613813565b610b0e565b3480156103c257600080fd5b5061025c6103d1366004613813565b610bbc565b3480156103e257600080fd5b506103487f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561041657600080fd5b5060125b60405160ff909116815260200161028c565b34801561043857600080fd5b50600954610348565b34801561044d57600080fd5b5061034860105481565b34801561046357600080fd5b50600a54600160a01b900460ff16610327565b34801561048257600080fd5b506103276104913660046139b4565b610c67565b3480156104a257600080fd5b50600d54600e54600f54604080516001600160a01b0394851681529390921660208401529082015260600161028c565b3480156104de57600080fd5b5061025c6104ed3660046139b4565b610ca3565b3480156104fe57600080fd5b5061025c61050d366004613d42565b610d79565b34801561051e57600080fd5b5061025c610d83565b34801561053357600080fd5b5061025c610542366004613813565b610e79565b34801561055357600080fd5b5061025c610562366004613886565b610fd5565b34801561057357600080fd5b50610278610582366004613b97565b611077565b34801561059357600080fd5b50600161041a565b3480156105a757600080fd5b506103486105b6366004613813565b6001600160a01b031660009081526020819052604090205490565b3480156105dd57600080fd5b5061025c6105ec3660046139b4565b611380565b3480156105fd57600080fd5b5061034861060c366004613813565b60116020526000908152604090205481565b34801561062a57600080fd5b5061025c611406565b34801561063f57600080fd5b5061034861064e36600461393e565b611460565b34801561065f57600080fd5b506102fa611623565b34801561067457600080fd5b5061025c610683366004613813565b611632565b34801561069457600080fd5b506103276106a33660046139b4565b6116dd565b3480156106b457600080fd5b506103276106c33660046139b4565b611776565b3480156106d457600080fd5b506103276106e3366004613813565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561070d57600080fd5b5061025c61071c366004613813565b611783565b34801561072d57600080fd5b5061025c61073c366004613c4b565b61182e565b34801561074d57600080fd5b50610348611973565b34801561076257600080fd5b50610327610771366004613aa6565b611989565b34801561078257600080fd5b5061025c6107913660046138c7565b611ac3565b3480156107a257600080fd5b506103486107b136600461384d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025c611cd5565b3480156107f057600080fd5b50610278611d15565b34801561080557600080fd5b50610348670de0b6b3a764000081565b34801561082157600080fd5b50610278610830366004613d42565b611db9565b34801561084157600080fd5b50601254610278906001600160a01b031681565b34801561086157600080fd5b5061025c6108703660046139e0565b611de3565b60606007805461088490614193565b80601f01602080910402602001604051908101604052809291908181526020018280546108b090614193565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b60006109143384846127fe565b50600192915050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561096257600080fd5b505af1158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190613cbd565b6020015115156001146109c85760405162461bcd60e51b81526004016109bf90613fac565b60405180910390fd5b601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050505081151560011415610a5d57610a5d85612922565b5050505050565b6000610a71848484612a24565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610af65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109bf565b610b0385338584036127fe565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190613cbd565b602001511515600114610bb05760405162461bcd60e51b81526004016109bf90613fac565b610bb981612bf3565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610c0157600080fd5b505af1158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613cbd565b602001511515600114610c5e5760405162461bcd60e51b81526004016109bf90613fac565b610bb981612c54565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610914918590610c9e908690614036565b6127fe565b3360009081526005602052604090205460ff161515600114610d075760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109bf565b600954610d1d82610d1760025490565b90612cb4565b1115610d6b5760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109bf565b610d758282612cc7565b5050565b610bb93382612da6565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190613830565b6001600160a01b0316336001600160a01b031614610e5f5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109bf565b610e67612ef4565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f245750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190613cbd565b6020015115156001145b610f845760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109bf565b610f8d81612fa3565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110425760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109bf565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190613cbd565b60200151151560011461111a5760405162461bcd60e51b81526004016109bf90613fac565b600254156111765760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b60648201526084016109bf565b6111998260008151811061118c5761118c6141ff565b6020026020010151612922565b62250490846003815181106111b0576111b06141ff565b6020026020010151116112175760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b60648201526084016109bf565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061124f5761124f6141ff565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc63590611297908490899089908990600401613eab565b602060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e99190613830565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b9678284600081518110611320576113206141ff565b60200260200101518560018151811061133b5761133b6141ff565b6020026020010151604051611370939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b600061138c83336107b1565b9050818110156113ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109bf565b6113f783338484036127fe565b6114018383612da6565b505050565b600b546001600160a01b03163314610e5f5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109bf565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190613cbd565b6020015115156001146115035760405162461bcd60e51b81526004016109bf90613fac565b601254604051638244937560e01b81526001600160a01b039091169063824493759061153790879087908790600401613e6b565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115899190613c32565b90506000826004815181106115a0576115a06141ff565b602002602001015111156115b7576115b784612922565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106115ec576115ec6141ff565b60200260200101516040516116149291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b60606008805461088490614193565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561167757600080fd5b505af115801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190613cbd565b6020015115156001146116d45760405162461bcd60e51b81526004016109bf90613fac565b610bb981612922565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561175f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109bf565b61176c33858584036127fe565b5060019392505050565b6000610914338484612a24565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118009190613cbd565b6020015115156001146118255760405162461bcd60e51b81526004016109bf90613fac565b610bb981612fc5565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab9190613cbd565b6020015115156001146118d05760405162461bcd60e51b81526004016109bf90613fac565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e89061193c90849087908790600401613f21565b600060405180830381600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b50505050505050565b6119866064670de0b6b3a764000061404e565b81565b600a54600090600160a01b900460ff1615611a005760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109bf565b611ab4611a0d8b8d614113565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250611aaf92508991508a9050614087565b6130d3565b9b9a5050505050505050505050565b42841015611b065760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109bf565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611b59836141ce565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611bd292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611c3d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c735750886001600160a01b0316816001600160a01b0316145b611cbf5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109bf565b611cca8989896127fe565b505050505050505050565b611cdd611d15565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610bb9573d6000803e3d6000fd5b600c546000906001600160a01b0316611da957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611d6c57600080fd5b505afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da49190613830565b905090565b50600c546001600160a01b031690565b60068181548110611dc957600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152602081905260408120548190871115611e525760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109bf565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a46000600f54118015611ed15750600e546001600160a01b031615155b8015611ee75750600d546001600160a01b031615155b1561214757600e54600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611f4257600080fd5b505af1158015611f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7a9190613c15565b611fd25760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109bf565b600f54611fe09060646135c5565b600e54600d54600f549293506001600160a01b039182169263a9059cbb929091169061200c90856135d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561205257600080fd5b505af1158015612066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208a9190613c15565b6120f05760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109bf565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49061213590856135d1565b60405190815260200160405180910390a35b60008311801561215f57506001600160a01b03841615155b801561217357506001600160a01b03851615155b1561239a576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fe9190613c15565b61224a5760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109bf565b6122558360646135c5565b91506001600160a01b03841663a9059cbb8661227186866135d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156122b757600080fd5b505af11580156122cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ef9190613c15565b61234f5760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109bf565b6001600160a01b038085169086167f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d161238886866135d1565b60405190815260200160405180910390a35b6000811180156123aa5750600082115b80156123c35750600e546001600160a01b038581169116145b80156123d757506001600160a01b03841615155b1561255f57600a546001600160a01b038086169163a9059cbb91166123fc8486612cb4565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561244257600080fd5b505af1158015612456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247a9190613c15565b6124d25760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109bf565b600a546040518281526001600160a01b038681169216907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a3600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a36127ed565b6000811180156125795750600e546001600160a01b031615155b156126ab57600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b1580156125ce57600080fd5b505af11580156125e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126069190613c15565b6126615760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109bf565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b6000821180156126c357506001600160a01b03841615155b156127ed57600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b15801561271657600080fd5b505af115801561272a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274e9190613c15565b6127a85760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109bf565b600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a35b611cca6127f8611d15565b88611776565b6001600160a01b0383166128605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109bf565b6001600160a01b0382166128c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109bf565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff161561298c5760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109bf565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b038316612a885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bf565b6001600160a01b038216612aea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bf565b6001600160a01b03831660009081526020819052604090205481811015612b625760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109bf565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b99908490614036565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612be591815260200190565b60405180910390a350505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff65890612a189042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d48090612a189042904390918252602082015260400190565b6000612cc08284614036565b9392505050565b6001600160a01b038216612d1d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109bf565b8060026000828254612d2f9190614036565b90915550506001600160a01b03821660009081526020819052604081208054839290612d5c908490614036565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612e065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109bf565b6001600160a01b03821660009081526020819052604090205481811015612e7a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109bf565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612ea9908490614070565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612f5a5760006005600060068481548110612f1a57612f1a6141ff565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612f52816141ce565b915050612ef7565b50612f67600660006135dd565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561303f5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109bf565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612a18565b600080846000815181106130e9576130e96141ff565b60200260200101519050600085600181518110613108576131086141ff565b6020026020010151905060006001600160a01b0316826001600160a01b0316141561318a5760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109bf565b6001600160a01b0381166132065760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109bf565b84600081518110613219576132196141ff565b60200260200101516000141561327d5760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109bf565b84600081518110613290576132906141ff565b6020026020010151600981905550876000815181106132b1576132b16141ff565b6020026020010151600790805190602001906132ce9291906135fb565b50876001815181106132e2576132e26141ff565b6020026020010151600890805190602001906132ff9291906135fb565b50600b80546001600160a01b0319166001600160a01b038416179055855186906002908110613330576133306141ff565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b179055865161338d90889060009061118c5761118c6141ff565b60006001600160a01b0316876001815181106133ab576133ab6141ff565b60200260200101516001600160a01b031614613455576133e4876001815181106133d7576133d76141ff565b6020026020010151612fa3565b866001815181106133f7576133f76141ff565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc424360405161344c929190918252602082015260400190565b60405180910390a35b86600281518110613468576134686141ff565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106134a9576134a96141ff565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106134ea576134ea6141ff565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600760405161352d9190613dcf565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612cc0828461404e565b6000612cc08284614070565b5080546000825590600052602060002090810190610bb9919061367f565b82805461360790614193565b90600052602060002090601f016020900481019282613629576000855561366f565b82601f1061364257805160ff191683800117855561366f565b8280016001018555821561366f579182015b8281111561366f578251825591602001919060010190613654565b5061367b92915061367f565b5090565b5b8082111561367b5760008155600101613680565b600067ffffffffffffffff8311156136ae576136ae614215565b6136c1601f8401601f1916602001613fe1565b90508281528383830111156136d557600080fd5b828260208301376000602084830101529392505050565b60008083601f8401126136fe57600080fd5b50813567ffffffffffffffff81111561371657600080fd5b6020830191508360208260051b850101111561373157600080fd5b9250929050565b600082601f83011261374957600080fd5b8135602061375e61375983614012565b613fe1565b80838252828201915082860187848660051b890101111561377e57600080fd5b60005b858110156137a65781356137948161422b565b84529284019290840190600101613781565b5090979650505050505050565b600082601f8301126137c457600080fd5b813560206137d461375983614012565b80838252828201915082860187848660051b89010111156137f457600080fd5b60005b858110156137a6578135845292840192908401906001016137f7565b60006020828403121561382557600080fd5b8135612cc08161422b565b60006020828403121561384257600080fd5b8151612cc08161422b565b6000806040838503121561386057600080fd5b823561386b8161422b565b9150602083013561387b8161422b565b809150509250929050565b60008060006060848603121561389b57600080fd5b83356138a68161422b565b925060208401356138b68161422b565b929592945050506040919091013590565b600080600080600080600060e0888a0312156138e257600080fd5b87356138ed8161422b565b965060208801356138fd8161422b565b95506040880135945060608801359350608088013560ff8116811461392157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561395357600080fd5b833561395e8161422b565b9250602084013567ffffffffffffffff8082111561397b57600080fd5b61398787838801613738565b9350604086013591508082111561399d57600080fd5b506139aa868287016137b3565b9150509250925092565b600080604083850312156139c757600080fd5b82356139d28161422b565b946020939093013593505050565b60008060008060008060c087890312156139f957600080fd5b8635613a048161422b565b955060208701359450604087013593506060870135613a228161422b565b92506080870135613a328161422b565b8092505060a087013590509295509295509295565b600080600080600060a08688031215613a5f57600080fd5b8535613a6a8161422b565b945060208601359350604086013592506060860135613a8881614240565b91506080860135613a988161422b565b809150509295509295909350565b60008060008060008060008060008060a08b8d031215613ac557600080fd5b8a3567ffffffffffffffff80821115613add57600080fd5b613ae98e838f016136ec565b909c509a5060208d0135915080821115613b0257600080fd5b613b0e8e838f016136ec565b909a50985060408d0135915080821115613b2757600080fd5b613b338e838f016136ec565b909850965060608d0135915080821115613b4c57600080fd5b613b588e838f016136ec565b909650945060808d0135915080821115613b7157600080fd5b50613b7e8d828e016136ec565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215613bac57600080fd5b833567ffffffffffffffff80821115613bc457600080fd5b613bd0878388016137b3565b94506020860135915080821115613be657600080fd5b613bf2878388016137b3565b93506040860135915080821115613c0857600080fd5b506139aa86828701613738565b600060208284031215613c2757600080fd5b8151612cc081614240565b600060208284031215613c4457600080fd5b5051919050565b60008060208385031215613c5e57600080fd5b823567ffffffffffffffff80821115613c7657600080fd5b818501915085601f830112613c8a57600080fd5b813581811115613c9957600080fd5b866020828501011115613cab57600080fd5b60209290920196919550909350505050565b600060808284031215613ccf57600080fd5b6040516080810181811067ffffffffffffffff82111715613cf257613cf2614215565b6040528251613d0081614240565b81526020830151613d1081614240565b60208201526040830151613d2381614240565b60408201526060830151613d3681614240565b60608201529392505050565b600060208284031215613d5457600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613d945781516001600160a01b031687529582019590820190600101613d6f565b509495945050505050565b600081518084526020808501945080840160005b83811015613d9457815187529582019590820190600101613db3565b600080835481600182811c915080831680613deb57607f831692505b6020808410821415613e0b57634e487b7160e01b86526022600452602486fd5b818015613e1f5760018114613e3057613e5d565b60ff19861689528489019650613e5d565b60008a81526020902060005b86811015613e555781548b820152908501908301613e3c565b505084890196505b509498975050505050505050565b6001600160a01b0384168152606060208201819052600090613e8f90830185613d5b565b8281036040840152613ea18185613d9f565b9695505050505050565b60008186825b6002811015613ed95781516001600160a01b0316835260209283019290910190600101613eb1565b50505060a06040830152613ef060a0830186613d9f565b8281036060840152613f028186613d9f565b90508281036080840152613f168185613d5b565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015613f8457858101830151858201604001528201613f68565b81811115613f96576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561400a5761400a614215565b604052919050565b600067ffffffffffffffff82111561402c5761402c614215565b5060051b60200190565b60008219821115614049576140496141e9565b500190565b60008261406b57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614082576140826141e9565b500390565b600061409561375984614012565b808482526020808301925084368760051b870111156140b357600080fd5b60005b8781101561410757813567ffffffffffffffff8111156140d557600080fd5b870136601f8201126140e657600080fd5b6140f4368235868401613694565b86525093820193908201906001016140b6565b50919695505050505050565b600061412161375984614012565b808482526020808301925084368760051b8701111561413f57600080fd5b60005b8781101561410757813567ffffffffffffffff81111561416157600080fd5b870136601f82011261417257600080fd5b614180368235868401613694565b8652509382019390820190600101614142565b600181811c908216806141a757607f821691505b602082108114156141c857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156141e2576141e26141e9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bb957600080fd5b8015158114610bb957600080fdfea26469706673582212202d86fd1a6312f0dfc70e2a07d5649bfa475307b8bd086787e2d1cbb4add62eca64736f6c63430008070033",
"linkReferences": {},
"deployedLinkReferences": {}
}