@credenza-web3/contracts
Version:
Credenza Contracts
1,343 lines • 90 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC1155DeComContract",
"sourceName": "contracts/tokens/ERC1155DeComContract.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
}
],
"name": "TransferBatch",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "TransferSingle",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "value",
"type": "string"
},
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "URI",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "customerAddress",
"type": "address"
}
],
"name": "addAuthorizedReseller",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "addAvailableCurrencyTokenContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "addOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "accounts",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
}
],
"name": "balanceOfBatch",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requestedAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"name": "buyWithEther",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requestedAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "address",
"name": "currencyTokenContract",
"type": "address"
}
],
"name": "buyWithToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requestedAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"name": "buyWithToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clearOwners",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getAvailableCurrencyTokenContractsList",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getBeneficiaryAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDefaultCurrencyTokenContract",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDescription",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "getDropAvailableAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getDropAvailableTotalAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getDropPerAddressLimit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getDropTotalLimit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "getDroppedAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getDroppedTotalAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getOwners",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getPriceEther",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getPriceFiat",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "currencyContract",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getPriceToken",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getPriceToken",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTrustedForwarder",
"outputs": [
{
"internalType": "address",
"name": "forwarder",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getVersion",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "image",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "customerAddress",
"type": "address"
}
],
"name": "isAuthorizedReseller",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "isAvailableCurrencyTokenContract",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "forwarder",
"type": "address"
}
],
"name": "isTrustedForwarder",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"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": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "ownerTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "readGuestRenderData",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "readOwnerRenderData",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "readRenderData",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "customerAddress",
"type": "address"
}
],
"name": "removeAuthorizedReseller",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "removeAvailableCurrencyTokenContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "removeOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "requestToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeBatchTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "addr",
"type": "address"
}
],
"name": "setBeneficiaryAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenContract",
"type": "address"
}
],
"name": "setDefaultCurrencyTokenContractAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "uri",
"type": "string"
}
],
"name": "setDefaultUri",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "description",
"type": "string"
}
],
"name": "setDescription",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "setDropPerAddressLimit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "setDropTotalLimit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "newImage",
"type": "string"
}
],
"name": "setImage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "newName",
"type": "string"
}
],
"name": "setName",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "setPriceEther",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "setPriceFiat",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "setPriceToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "currencyContract",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "setPriceToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "newSymbol",
"type": "string"
}
],
"name": "setSymbol",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_forwarder",
"type": "address"
}
],
"name": "setTrustedForwarder",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "string",
"name": "uri",
"type": "string"
}
],
"name": "setUri",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
},
{
"internalType": "string",
"name": "uri",
"type": "string"
}
],
"name": "setUriByIndex",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "uri",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "uriByIndex",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "string",
"name": "HTMLstring",
"type": "string"
}
],
"name": "writeOwnerRenderData",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "string",
"name": "HTMLstring",
"type": "string"
}
],
"name": "writeRenderData",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60a06040525f6080908152601490620000199082620002a8565b5060408051602081019091525f8152601590620000379082620002a8565b5060408051602081019091525f8152601690620000559082620002a8565b5034801562000062575f80fd5b5060408051602081019091525f81526200007c8162000097565b50620000916200008b620000a9565b620000b9565b62000370565b6002620000a58282620002a8565b5050565b5f620000b4620001d3565b905090565b6004541580620000ef5750620000ef620000d2620000a9565b6001600160a01b03165f9081526003602052604090205460ff1690565b6200014b5760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604482015261371760f11b606482015260840160405180910390fd5b6001600160a01b0381165f9081526003602052604090205460ff16620001d0576001600160a01b0381165f818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790555b50565b5f60143610801590620001f057506006546001600160a01b031633145b1562000203575060131936013560601c90565b503390565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200023157607f821691505b6020821081036200025057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002a3575f81815260208120601f850160051c810160208610156200027e5750805b601f850160051c820191505b818110156200029f578281556001016200028a565b5050505b505050565b81516001600160401b03811115620002c457620002c462000208565b620002dc81620002d584546200021c565b8462000256565b602080601f83116001811462000312575f8415620002fa5750858301515b5f19600386901b1c1916600185901b1785556200029f565b5f85815260208120601f198616915b82811015620003425788860151825594840194600190910190840162000321565b50858210156200036057878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b613ab6806200037e5f395ff3fe6080604052600436106103d2575f3560e01c80636428eb72116101ff578063b33a599f11610113578063d1eff895116100a8578063e1461f1211610078578063e1461f1214610c33578063e985e9c514610c5e578063ec6be06e14610ca5578063f242432a14610cc4578063f3ccaac014610ce3575f80fd5b8063d1eff89514610bb9578063d36223f114610bd6578063d93f5bed14610bf5578063da74222814610c14575f80fd5b8063cafc72d3116100e3578063cafc72d314610b33578063ce1b815f14610b5e578063ce1fc87f14610b7b578063d114c9dc14610b9a575f80fd5b8063b33a599f14610a9f578063b68de97414610abe578063b84c824614610af5578063c47f002714610b14575f80fd5b806388d0f86a116101945780639eda8aae116101645780639eda8aae146109eb578063a0e67e2b14610a22578063a22cb46514610a36578063a4e4638514610a55578063adfadad314610a74575f80fd5b806388d0f86a1461097a5780638e1b5aa91461099957806390c3f38f146109b857806395d89b41146109d7575f80fd5b8063782f08ae116101cf578063782f08ae146109085780638003e27f1461092757806380dc439e14610948578063867050411461095b575f80fd5b80636428eb721461088c5780637065cb48146108ab57806371adb5e6146108ca578063724e5c17146108e9575f80fd5b80632217e975116102f6578063466a18de1161028b5780635260f5e61161025b5780635260f5e6146107e157806355349e67146107f5578063572b6c0514610814578063578680be14610842578063609d58ad14610861575f80fd5b8063466a18de146107585780634e1273f4146107775780634fe50531146107a35780635199065f146107c2575f80fd5b80633a932dba116102c65780633a932dba146106dc5780633c695e39146106fb5780633de4fdc81461071a5780634187943314610739575f80fd5b80632217e975146106485780632eb2c2d6146106675780632f54bf6e14610686578063346b327b146106bd575f80fd5b8063156e29f61161036c578063192c17561161033c578063192c1756146105b55780631a092541146105f65780631abe7cb31461060a5780631df5c02c14610629575f80fd5b8063156e29f61461052757806316bef59614610546578063173825d914610577578063177ed0f314610596575f80fd5b806306fdde03116103a757806306fdde031461048157806308c1ea02146104a25780630d8e6e2c146104c35780630e89341c14610508575f80fd5b8062fbe0c5146103d6578062fdd58e1461041457806301ffc9a714610433578063031f5c8714610462575b5f80fd5b3480156103e1575f80fd5b506104016103f0366004612e84565b5f908152600f602052604090205490565b6040519081526020015b60405180910390f35b34801561041f575f80fd5b5061040161042e366004612eaf565b610cf7565b34801561043e575f80fd5b5061045261044d366004612eee565b610d8e565b604051901515815260200161040b565b34801561046d575f80fd5b5061040161047c366004612eaf565b610ddd565b34801561048c575f80fd5b50610495610e04565b60405161040b9190612f4c565b3480156104ad575f80fd5b506104c16104bc36600461300f565b610e90565b005b3480156104ce575f80fd5b5060408051808201909152601c81527f455243313135354465436f6d436f6e7472616374207620312e302e30000000006020820152610495565b348015610513575f80fd5b50610495610522366004612e84565b610edd565b348015610532575f80fd5b506104c1610541366004613053565b611045565b348015610551575f80fd5b50600a546001600160a01b03165b6040516001600160a01b03909116815260200161040b565b348015610582575f80fd5b506104c1610591366004613085565b611090565b3480156105a1575f80fd5b506104016105b0366004612e84565b611155565b3480156105c0575f80fd5b506104016105cf3660046130a0565b5f9182526010602090815260408084206001600160a01b0393909316845291905290205490565b348015610601575f80fd5b5061049561116d565b348015610615575f80fd5b506104c16106243660046130ce565b6111fd565b348015610634575f80fd5b506104c1610643366004613085565b61123f565b348015610653575f80fd5b50610401610662366004612e84565b611290565b348015610672575f80fd5b506104c161068136600461317f565b6112dc565b348015610691575f80fd5b506104526106a0366004613085565b6001600160a01b03165f9081526003602052604090205460ff1690565b3480156106c8575f80fd5b506104c16106d7366004613226565b61133a565b3480156106e7575f80fd5b506104c16106f6366004613085565b611478565b348015610706575f80fd5b506104c1610715366004613085565b6114cd565b348015610725575f80fd5b506104c1610734366004613085565b611521565b348015610744575f80fd5b50610495610753366004612e84565b6115d6565b348015610763575f80fd5b506104c161077236600461325c565b61169c565b348015610782575f80fd5b50610796610791366004613296565b6116dd565b60405161040b919061338c565b3480156107ae575f80fd5b506104c16107bd3660046130ce565b611805565b3480156107cd575f80fd5b506104c16107dc36600461300f565b611847565b3480156107ec575f80fd5b506104c161188f565b348015610800575f80fd5b506104c161080f3660046130ce565b611936565b34801561081f575f80fd5b5061045261082e366004613085565b6006546001600160a01b0391821691161490565b34801561084d575f80fd5b506104c161085c3660046130ce565b611978565b34801561086c575f80fd5b5061040161087b366004612e84565b5f908152600e602052604090205490565b348015610897575f80fd5b506104956108a6366004612e84565b6119c0565b3480156108b6575f80fd5b506104c16108c5366004613085565b6119dc565b3480156108d5575f80fd5b506104c16108e436600461325c565b611a91565b3480156108f4575f80fd5b506104c161090336600461339e565b611ace565b348015610913575f80fd5b506104c161092236600461300f565b611b0b565b348015610932575f80fd5b5061093b611b5e565b60405161040b91906133e5565b6104c1610956366004613226565b611bbd565b348015610966575f80fd5b50610495610975366004612e84565b611c18565b348015610985575f80fd5b506104c16109943660046130ce565b611c34565b3480156109a4575f80fd5b506104016109b33660046130a0565b611c76565b3480156109c3575f80fd5b506104c16109d236600461325c565b611d0a565b3480156109e2575f80fd5b50610495611d47565b3480156109f6575f80fd5b50610452610a05366004613085565b6001600160a01b03165f908152601a602052604090205460ff1690565b348015610a2d575f80fd5b5061093b611d54565b348015610a41575f80fd5b506104c1610a5036600461343e565b611db2565b348015610a60575f80fd5b50610495610a6f3660046130ce565b611dc4565b348015610a7f575f80fd5b50610401610a8e366004612e84565b5f9081526008602052604090205490565b348015610aaa575f80fd5b506104c1610ab9366004613085565b611f26565b348015610ac9575f80fd5b50610452610ad8366004613085565b6001600160a01b03165f908152600b602052604090205460ff1690565b348015610b00575f80fd5b506104c1610b0f36600461325c565b611fe8565b348015610b1f575f80fd5b506104c1610b2e36600461325c565b612025565b348015610b3e575f80fd5b50610401610b4d366004612e84565b5f9081526011602052604090205490565b348015610b69575f80fd5b506006546001600160a01b031661055f565b348015610b86575f80fd5b506104c1610b9536600461346a565b612062565b348015610ba5575f80fd5b506104c1610bb43660046134b6565b6120bb565b348015610bc4575f80fd5b50600d546001600160a01b031661055f565b348015610be1575f80fd5b506104c1610bf0366004613226565b612114565b348015610c00575f80fd5b506104c1610c0f366004613053565b61216f565b348015610c1f575f80fd5b506104c1610c2e366004613085565b6121c5565b348015610c3e575f80fd5b50610401610c4d366004612e84565b5f9081526007602052604090205490565b348015610c69575f80fd5b50610452610c783660046134f9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205460ff1690565b348015610cb0575f80fd5b506104c1610cbf366004613085565b612214565b348015610ccf575f80fd5b506104c1610cde366004613525565b612267565b348015610cee575f80fd5b506104956122be565b5f6001600160a01b038316610d665760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f818152602081815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216636cdb3d1360e11b1480610dbe57506001600160e01b031982166303a24d0760e21b145b80610d8857506301ffc9a760e01b6001600160e01b0319831614610d88565b6001600160a01b03919091165f908152600960209081526040808320938352929052205490565b60148054610e1190613589565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3d90613589565b8015610e885780601f10610e5f57610100808354040283529160200191610e88565b820191905f5260205f20905b815481529060010190602001808311610e6b57829003601f168201915b505050505081565b6004541580610ea55750610ea56106a06122cb565b610ec15760405162461bcd60e51b8152600401610d5d906135bb565b5f828152601960205260409020610ed88282613642565b505050565b5f818152601260209081526040808320838052909152812080546060929190610f0590613589565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3190613589565b8015610f7c5780601f10610f5357610100808354040283529160200191610f7c565b820191905f5260205f20905b815481529060010190602001808311610f5f57829003601f168201915b5050505050905080515f0361101c5760138054610f9890613589565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc490613589565b801561100f5780601f10610fe65761010080835404028352916020019161100f565b820191905f5260205f20905b815481529060010190602001808311610ff257829003601f168201915b5050505050915050919050565b5f83815260126020908152604080832083805290915290208054610f9890613589565b50919050565b600454158061105a575061105a6106a06122cb565b6110765760405162461bcd60e51b8152600401610d5d906135bb565b610ed883838360405180602001604052805f8152506122d9565b60045415806110a557506110a56106a06122cb565b6110c15760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b0381165f9081526003602052604090205460ff166111285760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e657200006044820152606401610d5d565b6001600160a01b0381165f908152600360205260409020805460ff191690556111526004826123f2565b50565b600a545f90610d88906001600160a01b031683610ddd565b60606005805461117c90613589565b80601f01602080910402602001604051908101604052809291908181526020018280546111a890613589565b80156111f35780601f106111ca576101008083540402835291602001916111f3565b820191905f5260205f20905b8154815290600101906020018083116111d657829003601f168201915b5050505050905090565b600454158061121257506112126106a06122cb565b61122e5760405162461bcd60e51b8152600401610d5d906135bb565b5f9182526007602052604090912055565b600454158061125457506112546106a06122cb565b6112705760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b03165f908152601a60205260409020805460ff19169055565b5f818152600e6020908152604080832054601190925282205482911115610d88575f83815260116020908152604080832054600e909252909120546112d59190613712565b9392505050565b6112e46122cb565b6001600160a01b0316856001600160a01b0316148061130a575061130a85610c786122cb565b6113265760405162461bcd60e51b8152600401610d5d90613725565b61133385858585856124f1565b5050505050565b600d546001600160a01b03166113825760405162461bcd60e51b815260206004820152600d60248201526c111c9bdc08191a5cd8589b1959609a1b6044820152606401610d5d565b8161138d8483611c76565b10156113d15760405162461bcd60e51b8152602060048201526013602482015272111c9bdc081b1a5b5a5d08195e18d959591959606a1b6044820152606401610d5d565b600d5482906113e9906001600160a01b031685610cf7565b10156114375760405162461bcd60e51b815260206004820152601b60248201527f52616e206f7574206f6620617661696c61626c6520746f6b656e7300000000006044820152606401610d5d565b6114428383836126d3565b600d5460408051808201909152600381526203078360ec1b6020820152610ed8916001600160a01b031690839086908690612730565b600454158061148d575061148d6106a06122cb565b6114a95760405162461bcd60e51b8152600401610d5d906135bb565b600a80546001600160a01b0319166001600160a01b03831617905561115281611521565b60045415806114e257506114e26106a06122cb565b6114fe5760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b03165f908152601a60205260409020805460ff19166001179055565b600454158061153657506115366106a06122cb565b6115525760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b0381165f908152600b602052604090205460ff16611152576001600160a01b03165f818152600b60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055565b60605f6115e33384610cf7565b1115611684575f828152601960205260409020805461160190613589565b80601f016020809104026020016040519081016040528092919081815260200182805461162d90613589565b80156116785780601f1061164f57610100808354040283529160200191611678565b820191905f5260205f20905b81548152906001019060200180831161165b57829003601f168201915b50505050509050919050565b5f828152601860205260409020805461160190613589565b60045415806116b157506116b16106a06122cb565b6116cd5760405162461bcd60e51b8152600401610d5d906135bb565b60136116d98282613642565b5050565b606081518351146117425760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610d5d565b5f835167ffffffffffffffff81111561175d5761175d612f5e565b604051908082528060200260200182016040528015611786578160200160208202803683370190505b5090505f5b84518110156117fd576117d08582815181106117a9576117a9613773565b60200260200101518583815181106117c3576117c3613773565b6020026020010151610cf7565b8282815181106117e2576117e2613773565b60209081029190910101526117f681613787565b905061178b565b509392505050565b600454158061181a575061181a6106a06122cb565b6118365760405162461bcd60e51b8152600401610d5d906135bb565b5f918252600e602052604090912055565b600454158061185c575061185c6106a06122cb565b6118785760405162461bcd60e51b8152600401610d5d906135bb565b5f828152601860205260409020610ed88282613642565b60045415806118a457506118a46106a06122cb565b6118c05760405162461bcd60e51b8152600401610d5d906135bb565b5f5b600454811015611928575f60035f600484815481106118e3576118e3613773565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790558061192081613787565b9150506118c2565b5061193460045f612e56565b565b600454158061194b575061194b6106a06122cb565b6119675760405162461bcd60e51b8152600401610d5d906135bb565b5f918252600f602052604090912055565b600454158061198d575061198d6106a06122cb565b6119a95760405162461bcd60e51b8152600401610d5d906135bb565b600a546116d9906001600160a01b0316838361216f565b5f81815260186020526040902080546060919061160190613589565b60045415806119f157506119f16106a06122cb565b611a0d5760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b0381165f9081526003602052604090205460ff16611152576001600160a01b03165f818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055565b6004541580611aa65750611aa66106a06122cb565b611ac25760405162461bcd60e51b8152600401610d5d906135bb565b60166116d98282613642565b60405162461bcd60e51b815260206004820152601260248201527113d4115490551253d397d11254d05093115160721b6044820152606401610d5d565b6004541580611b205750611b206106a06122cb565b611b3c5760405162461bcd60e51b8152600401610d5d906135bb565b5f8281526012602090815260408083208380529091529020610ed88282613642565b6060600c8054806020026020016040519081016040528092919081815260200182805480156111f357602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611b96575050505050905090565b600d548290611bd5906001600160a01b031685610cf7565b1015611c0e5760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b6044820152606401610d5d565b6114428383612860565b5f81815260196020526040902080546060919061160190613589565b6004541580611c495750611c496106a06122cb565b611c655760405162461bcd60e51b8152600401610d5d906135bb565b5f9182526008602052604090912055565b5f80611c8184611290565b5f858152600f6020908152604080832054601083528184206001600160a01b038916855290925282205492935090911015611cf1575f8581526010602090815260408083206001600160a01b0388168452825280832054888452600f90925290912054611cee9190613712565b90505b80821115611d02579150610d889050565b509050610d88565b6004541580611d1f5750611d1f6106a06122cb565b611d3b5760405162461bcd60e51b8152600401610d5d906135bb565b60056116d98282613642565b60158054610e1190613589565b606060048054806020026020016040519081016040528092919081815260200182805480156111f357602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311611b96575050505050905090565b6116d9611dbd6122cb565b8383612949565b5f828152601260209081526040808320848452909152812080546060929190611dec90613589565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1890613589565b8015611e635780601f10611e3a57610100808354040283529160200191611e63565b820191905f5260205f20905b815481529060010190602001808311611e4657829003601f168201915b5050505050905080515f03611f035760138054611e7f90613589565b80601f0160208091040260200160405190810160405280929190818152602001828054611eab90613589565b8015611ef65780601f10611ecd57610100808354040283529160200191611ef6565b820191905f5260205f20905b815481529060010190602001808311611ed957829003601f168201915b5050505050915050610d88565b5f84815260126020908152604080832086845290915290208054611e7f90613589565b6004541580611f3b5750611f3b6106a06122cb565b611f575760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b0381165f908152600b602052604090205460ff16611fbe5760405162461bcd60e51b815260206004820181905260248201527f54617267657420636f6e7472616374206973206e6f7420617661696c61626c656044820152606401610d5d565b6001600160a01b0381165f908152600b60205260409020805460ff19169055611152600c826123f2565b6004541580611ffd5750611ffd6106a06122cb565b6120195760405162461bcd60e51b8152600401610d5d906135bb565b60156116d98282613642565b600454158061203a575061203a6106a06122cb565b6120565760405162461bcd60e51b8152600401610d5d906135bb565b60146116d98282613642565b600454158061207757506120776106a06122cb565b6120935760405162461bcd60e51b8152600401610d5d906135bb565b5f83815260126020908152604080832083805290915290206120b58282613642565b50505050565b60045415806120d057506120d06106a06122cb565b6120ec5760405162461bcd60e51b8152600401610d5d906135bb565b6120b5848484846040518060400160405280600381526020016203078360ec1b815250612730565b600d54829061212c906001600160a01b031685610cf7565b10156121655760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b6044820152606401610d5d565b6114428383612a28565b600454158061218457506121846106a06122cb565b6121a05760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b039092165f9081526009602090815260408083209383529290522055565b60045415806121da57506121da6106a06122cb565b6121f65760405162461bcd60e51b8152600401610d5d906135bb565b600680546001600160a01b0319166001600160a01b03831617905550565b600454158061222957506122296106a06122cb565b6122455760405162461bcd60e51b8152600401610d5d906135bb565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b61226f6122cb565b6001600160a01b0316856001600160a01b03161480612295575061229585610c786122cb565b6122b15760405162461bcd60e51b8152600401610d5d90613725565b6113338585858585612730565b60168054610e1190613589565b5f6122d4612a41565b905090565b6001600160a01b0384166123395760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610d5d565b5f6123426122cb565b90505f61234e85612a75565b90505f61235a85612a75565b90505f868152602081815260408083206001600160a01b038b1684529091528120805487929061238b90849061379f565b909155505060408051878152602081018790526001600160a01b03808a16925f92918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46123e9835f89898989612abe565b50505050505050565b5f5b8254811015610ed857816001600160a01b031683828154811061241957612419613773565b5f918252602090912001546001600160a01b0316036124df578254839061244290600190613712565b8154811061245257612452613773565b905f5260205f20015f9054906101000a90046001600160a01b031683828154811061247f5761247f613773565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550828054806124ba576124ba6137b2565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b806124e981613787565b9150506123f4565b81518351146125535760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610d5d565b6001600160a01b0384166125795760405162461bcd60e51b8152600401610d5d906137c6565b5f6125826122cb565b90505f5b8451811015612665575f8582815181106125a2576125a2613773565b602002602001015190505f8583815181106125bf576125bf613773565b6020908102919091018101515f84815280835260408082206001600160a01b038e16835290935291909120549091508181101561260e5760405162461bcd60e51b8152600401610d5d9061380b565b5f838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061264a90849061379f565b925050819055505050508061265e90613787565b9050612586565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516126b5929190613855565b60405180910390a46126cb818787878787612c18565b505050505050565b5f8381526010602090815260408083206001600160a01b03851684529091528120805484929061270490849061379f565b90915550505f838152601160205260408120805484929061272690849061379f565b9091555050505050565b6001600160a01b0384166127565760405162461bcd60e51b8152600401610d5d906137c6565b5f61275f6122cb565b90505f61276b85612a75565b90505f61277785612a75565b90505f868152602081815260408083206001600160a01b038c168452909152902054858110156127b95760405162461bcd60e51b8152600401610d5d9061380b565b5f878152602081815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906127f590849061379f565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4612855848a8a8a8a8a612abe565b505050505050505050565b5f828152600860205260408120541161288b5760405162461bcd60e51b8152600401610d5d90613882565b600d546001600160a01b03166128b35760405162461bcd60e51b8152600401610d5d90613882565b5f828152600860205260408120546128cc9083906138a9565b9050803410156129135760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b6044820152606401610d5d565b600d546040516001600160a01b03909116903480156108fc02915f818181858888f193505050501580156120b5573d5f803e3d5ffd5b816001600160a01b0316836001600160a01b0316036129bc5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610d5d565b6001600160a01b038381165f81815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600a546116d990839083906001600160a01b0316612cd2565b5f60143610801590612a5d57506006546001600160a01b031633145b15612a6f575060131936013560601c90565b50335b90565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f81518110612aad57612aad613773565b602090810291909101015292915050565b6001600160a01b0384163b156126cb5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190612b0290899089908890889088906004016138c0565b6020604051808303815f875af1925050508015612b3c575060408051601f3d908101601f19168201909252612b3991810190613904565b60015b612be857612b4861391f565b806308c379a003612b815750612b5c613937565b80612b675750612b83565b8060405162461bcd60e51b8152600401610d5d9190612f4c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610d5d565b6001600160e01b0319811663f23a6e6160e01b146123e95760405162461bcd60e51b8152600401610d5d906139c0565b6001600160a01b0384163b156126cb5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190612c5c9089908990889088908890600401613a08565b6020604051808303815f875af1925050508015612c96575060408051601f3d908101601f19168201909252612c9391810190613904565b60015b612ca257612b4861391f565b6001600160e01b0319811663bc197c8160e01b146123e95760405162461bcd60e51b8152600401610d5d906139c0565b6001600160a01b0381165f908152600b602052604090205460ff16612d395760405162461bcd60e51b815260206004820152601f60248201527f43555252454e43595f434f4e54524143545f4e4f545f535550504f52544544006044820152606401610d5d565b5f612d448285610ddd565b11612d615760405162461bcd60e51b8152600401610d5d90613882565b600d546001600160a01b0316612d895760405162461bcd60e51b8152600401610d5d90613882565b6001600160a01b038116612daf5760405162461bcd60e51b8152600401610d5d90613882565b5f612dba8285610ddd565b612dc490846138a9565b9050816001600160a01b0381166323b872dd612dde6122cb565b600d5460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604481018590526064016020604051808303815f875af1158015612e32573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126cb9190613a65565b5080545f8255905f5260205f209081019061115291905b80821115612e80575f8155600101612e6d565b5090565b5f60208284031215612e94575f80fd5b5035919050565b6001600160a01b0381168114611152575f80fd5b5f8060408385031215612ec0575f80fd5b8235612ecb81612e9b565b946020939093013593505050565b6001600160e01b031981168114611152575f80fd5b5f60208284031215612efe575f80fd5b81356112d581612ed9565b5f81518084525f5b81811015612f2d57602081850181015186830182015201612f11565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f6112d56020830184612f09565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f1916810167ffffffffffffffff81118282101715612f9857612f98612f5e565b6040525050565b5f82601f830112612fae575f80fd5b813567ffffffffffffffff811115612fc857612fc8612f5e565b604051612fdf601f8301601f191660200182612f72565b818152846020838601011115612ff3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215613020575f80fd5b82359150602083013567ffffffffffffffff81111561303d575f80fd5b61304985828601612f9f565b9150509250929050565b5f805f60608486031215613065575f80fd5b833561307081612e9b565b95602085013595506040909401359392505050565b5f60208284031215613095575f80fd5b81356112d581612e9b565b5f80604083850312156130b1575f80fd5b8235915060208301356130c381612e9b565b809150509250929050565b5f80604083850312156130df575f80fd5b50508035926020909101359150565b5f67ffffffffffffffff82111561310757613107612f5e565b5060051b60200190565b5f82601f830112613120575f80fd5b8135602061312d826130ee565b60405161313a8282612f72565b83815260059390931b8501820192828101915086841115613159575f80fd5b8286015b84811015613174578035835291830191830161315d565b509695505050505050565b5f805f805f60a08688031215613193575f80fd5b853561319e81612e9b565b945060208601356131ae81612e9b565b9350604086013567ffffffffffffffff808211156131ca575f80fd5b6131d689838a01613111565b945060608801359150808211156131eb575f80fd5b6131f789838a01613111565b9350608088013591508082111561320c575f80fd5b5061321988828901612f9f565b9150509295509295909350565b5f805f60608486031215613238575f80fd5b8335925060208401359150604084013561325181612e9b565b809150509250925092565b5f6020828403121561326c575f80fd5b813567ffffffffffffffff811115613282575f80fd5b61328e84828501612f9f565b949350505050565b5f80604083850312156132a7575f80fd5b823567ffffffffffffffff808211156132be575f80fd5b818501915085601f8301126132d1575f80fd5b813560206132de826130ee565b6040516132eb8282612f72565b83815260059390931b850182019282810191508984111561330a575f80fd5b948201945b8386101561333157853561332281612e9b565b8252948201949082019061330f565b96505086013592505080821115613346575f80fd5b5061304985828601613111565b5f8151808452602080850194508084015f5b8381101561338157815187529582019590820190600101613365565b509495945050505050565b602081525f6112d56020830184613353565b5f805f80608085870312156133b1575f80fd5b843593506020850135925060408501356133ca81612e9b565b915060608501356133da81612e9b565b939692955090935050565b602080825282518282018190525f9190848201906040850190845b818110156134255783516001600160a01b031683529284019291840191600101613400565b50909695505050505050565b8015158114611152575f80fd5b5f806040838503121561344f575f80fd5b823561345a81612e9b565b915060208301356130c381613431565b5f805f6060848603121561347c575f80fd5b8335925060208401359150604084013567ffffffffffffffff8111156134a0575f80fd5b6134ac86828701612f9f565b9150509250925092565b5f805f80608085870312156134c9575f80fd5b84356134d481612e9b565b935060208501356134e481612e9b565b93969395505050506040820135916060013590565b5f806040838503121561350a575f80fd5b823561351581612e9b565b915060208301356130c381612e9b565b5f805f805f60a08688031215613539575f80fd5b853561354481612e9b565b9450602086013561355481612e9b565b93506040860135925060608601359150608086013567ffffffffffffffff81111561357d575f80fd5b61321988828901612f9f565b600181811c9082168061359d57607f821691505b60208210810361103f57634e487b7160e01b5f52602260045260245ffd5b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b601f821115610ed8575f81815260208120601f850160051c810160208610156136235750805b601f850160051c820191505b818110156126cb5782815560010161362f565b815167ffffffffffffffff81111561365c5761365c612f5e565b6136708161366a8454613589565b846135fd565b602080601f8311600181146136a3575f841561368c5750858301515b5f19600386901b1c1916600185901b1785556126cb565b5f85815260208120601f198616915b828110156136d1578886015182559484019460019091019084016136b2565b50858210156136ee57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d8857610d886136fe565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201613798576137986136fe565b5060010190565b80820180821115610d8857610d886136fe565b634e487b7160e01b5f52603160045260245ffd5b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081525f6138676040830185613353565b82810360208401526138798185613353565b95945050505050565b6020808252600d908201526c14d1531317d11254d050931151609a1b604082015260600190565b8082028115828204841417610d8857610d886136fe565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f906138f990830184612f09565b979650505050505050565b5f60208284031215613914575f80fd5b81516112d581612ed9565b5f60033d1115612a725760045f803e505f5160e01c90565b5f60443d10156139445790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561397457505050505090565b828501915081518181111561398c5750505050505090565b843d87010160208285010111156139a65750505050505090565b6139b560208286010187612f72565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f90613a3390830186613353565b8281036060840152613a458186613353565b90508281036080840152613a598185612f09565b98975050505050505050565b5f60208284031215613a75575f80fd5b81516112d58161343156fea26469706673582212201b01a1d9950fb7654cfe9cb2905f388e502b806552928014867dc71bb89914b264736f6c63430008140033",
"deployedBytecode": "0x6080604052600436106103d2575f3560e01c80636428eb72116101ff578063b33a599f11610113578063d1eff895116100a8578063e1461f1211610078578063e1461f1214610c33578063e985e9c514610c5e578063ec6be06e14610ca5578063f242432a14610cc4578063f3ccaac014610ce3575f80fd5b8063d1eff89514610bb9578063d36223f114610bd6578063d93f5bed14610bf5578063da74222814610c14575f80fd5b8063cafc72d3116100e3578063cafc72d314610b33578063ce1b815f14610b5e578063ce1fc87f14610b7b578063d114c9dc14610b9a575f80fd5b8063b33a599f14610a9f578063b68de97414610abe578063b84c824614610af5578063c47f002714610b14575f80fd5b806388d0f86a116101945780639eda8aae116101645780639eda8aae146109eb578063a0e67e2b14610a22578063a22cb46514610a36578063a4e4638514610a55578063adfadad314610a74575f80fd5b806388d0f86a1461097a5780638e1b5aa91461099957806390c3f38f146109b857806395d89b41146109d7575f80fd5b8063782f08ae116101cf578063782f08ae146109085780638003e27f1461092757806380dc439e14610948578063867050411461095b575f80fd5b80636428eb721461088c5780637065cb48146108ab57806371adb5e6146108ca578063724e5c17146108e9575f80fd5b80632217e975116102f6578063466a18de1161028b5780635260f5e61161025b5780635260f5e6146107e157806355349e67146107f5578063572b6c0514610814578063578680be14610842578063609d58ad14610861575f80fd5b8063466a18de146107585780634e1273f4146107775780634fe50531146107a35780635199065f146107c2575f80fd5b80633a932dba116102c65780633a932dba146106dc5780633c695e39146106fb5780633de4fdc81461071a5780634187943314610739575f80fd5b80632217e975146106485780632eb2c2d6146106675780632f54bf6e14610686578063346b327b146106bd575f80fd5b8063156e29f61161036c578063192c17561161033c578063192c1756146105b55780631a092541146105f65780631abe7cb31461060a5780631df5c02c14610629575f80fd5b8063156e29f61461052757806316bef59614610546578063173825d914610577578063177ed0f314610596575f80fd5b806306fdde03116103a757806306fdde031461048157806308c1ea02146104a25780630d8e6e2c146104c35780630e89341c14610508575f80fd5b8062fbe0c5146103d6578062fdd58e1461041457806301ffc9a714610433578063031f5c8714610462575b5f80fd5b3480156103e1575f80fd5b506104016103f0366004612e84565b5f908152600f602052604090205490565b6040519081526020015b60405180910390f35b34801561041f575f80fd5b5061040161042e366004612eaf565b610cf7565b34801561043e575f80fd5b5061045261044d366004612eee565b610d8e565b604051901515815260200161040b565b34801561046d575f80fd5b5061040161047c366004612eaf565b610ddd565b34801561048c575f80fd5b50610495610e04565b60405161040b9190612f4c565b3480156104ad575f80fd5b506104c16104bc36600461300f565b610e90565b005b3480156104ce575f80fd5b5060408051808201909152601c81527f455243313135354465436f6d436f6e7472616374207620312e302e30000000006020820152610495565b348015610513575f80fd5b50610495610522366004612e84565b610edd565b348015610532575f80fd5b506104c1610541366004613053565b611045565b348015610551575f80fd5b50600a546001600160a01b03165b6040516001600160a01b03909116815260200161040b565b348015610582575f80fd5b506104c1610591366004613085565b611090565b3480156105a1575f80fd5b506104016105b0366004612e84565b611155565b3480156105c0575f80fd5b506104016105cf3660046130a0565b5f9182526010602090815260408084206001600160a01b0393909316845291905290205490565b348015610601575f80fd5b5061049561116d565b348015610615575f80fd5b506104c16106243660046130ce565b6111fd565b348015610634575f80fd5b506104c1610643366004613085565b61123f565b348015610653575f80fd5b50610401610662366004612e84565b611290565b348015610672575f80fd5b506104c161068136600461317f565b6112dc565b348015610691575f80fd5b506104526106a0366004613085565b6001600160a01b03165f9081526003602052604090205460ff1690565b3480156106c8575f80fd5b506104c16106d7366004613226565b61133a565b3480156106e7575f80fd5b506104c16106f6366004613085565b611478565b348015610706575f80fd5b506104c1610715366004613085565b6114cd565b348015610725575f80fd5b506104c1610734366004613085565b611521565b348015610744575f80fd5b50610495610753366004612e84565b6115d6565b348015610763575f80fd5b506104c161077236600461325c565b61169c565b348015610782575f80fd5b50610796610791366004613296565b6116dd565b60405161040b919061338c565b3480156107ae575f80fd5b506104c16107bd3660046130ce565b611805565b3480156107cd575f80fd5b506104c16107dc36600461300f565b611847565b3480156107ec575f80fd5b506104c161188f565b348015610800575f80fd5b506104c161080f3660046130ce565b611936565b34801561081f575f80fd5b5061045261082e366004613085565b6006546001600160a01b0391821691161490565b34801561084d575f80fd5b506104c161085c3660046130ce565b611978565b34801561086c575f80fd5b5061040161087b366004612e84565b5f908152600e602052604090205490565b348015610897575f80fd5b506104956108a6366004612e84565b6119c0565b3480156108b6575f80fd5b506104c16108c5366004613085565b6119dc565b3480156108d5575f80fd5b506104c16108e436600461325c565b611a91565b3480156108f4575f80fd5b506104c161090336600461339e565b611ace565b348015610913575f80fd5b506104c161092236600461300f565b611b0b565b348015610932575f80fd5b5061093b611b5e565b60405161040b91906133e5565b6104c1610956366004613226565b611bbd565b348015610966575f80fd5b50610495610975366004612e84565b611c18565b348015610985575f80fd5b506104c16109943660046130ce565b611c34565b3480156109a4575f80fd5b506104016109b33660046130a0565b611c76565b3480156109c3575f80fd5b506104c16109d236600461325c565b611d0a565b3480156109e2575f80fd5b50610495611d47565b3480156109f6575f80fd5b50610452610a05366004613085565b6001600160a01b03165f908152601a602052604090205460ff1690565b348015610a2d575f80fd5b5061093b611d54565b348015610a41575f80fd5b506104c1610a5036600461343e565b611db2565b348015610a60575f80fd5b50610495610a6f3660046130ce565b611dc4565b348015610a7f575f80fd5b50610401610a8e366004612e84565b5f9081526008602052604090205490565b348015610aaa575f80fd5b506104c1610ab9366004613085565b611f26565b348015610ac9575f80fd5b50610452610ad8366004613085565b6001600160a01b03165f908152600b602052604090205460ff1690565b348015610b00575f80fd5b506104c1610b0f36600461325c565b611fe8565b348015610b1f575f80fd5b506104c1610b2e36600461325c565b612025565b348015610b3e575f80fd5b50610401610b4d366004612e84565b5f9081526011602052604090205490565b348015610b69575f80fd5b506006546001600160a01b031661055f565b348015610b86575f80fd5b506104c1610b9536600461346a565b612062565b348015610ba5575f80fd5b506104c1610bb43660046134b6565b6120bb565b348015610bc4575f80fd5b50600d546001600160a01b031661055f565b348015610be1575f80fd5b506104c1610bf0366004613226565b612114565b348015610c00575f80fd5b506104c1610c0f366004613053565b61216f565b348015610c1f575f80fd5b506104c1610c2e366004613085565b6121c5565b348015610c3e575f80fd5b50610401610c4d366004612e84565b5f9081526007602052604090205490565b348015610c69575f80fd5b50610452610c783660046134f9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205460ff1690565b348015610cb0575f80fd5b506104c1610cbf366004613085565b612214565b348015610ccf575f80fd5b506104c1610cde366004613525565b612267565b348015610cee575f80fd5b506104956122be565b5f6001600160a01b038316610d665760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f818152602081815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216636cdb3d1360e11b1480610dbe57506001600160e01b031982166303a24d0760e21b145b80610d8857506301ffc9a760e01b6001600160e01b0319831614610d88565b6001600160a01b03919091165f908152600960209081526040808320938352929052205490565b60148054610e1190613589565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3d90613589565b8015610e885780601f10610e5f57610100808354040283529160200191610e88565b820191905f5260205f20905b815481529060010190602001808311610e6b57829003601f168201915b505050505081565b6004541580610ea55750610ea56106a06122cb565b610ec15760405162461bcd60e51b8152600401610d5d906135bb565b5f828152601960205260409020610ed88282613642565b505050565b5f818152601260209081526040808320838052909152812080546060929190610f0590613589565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3190613589565b8015610f7c5780601f10610f5357610100808354040283529160200191610f7c565b820191905f5260205f20905b815481529060010190602001808311610f5f57829003601f168201915b5050505050905080515f0361101c5760138054610f9890613589565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc490613589565b801561100f5780601f10610fe65761010080835404028352916020019161100f565b820191905f5260205f20905b815481529060010190602001808311610ff257829003601f168201915b5050505050915050919050565b5f83815260126020908152604080832083805290915290208054610f9890613589565b50919050565b600454158061105a575061105a6106a06122cb565b6110765760405162461bcd60e51b8152600401610d5d906135bb565b610ed883838360405180602001604052805f8152506122d9565b60045415806110a557506110a56106a06122cb565b6110c15760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b0381165f9081526003602052604090205460ff166111285760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e657200006044820152606401610d5d565b6001600160a01b0381165f908152600360205260409020805460ff191690556111526004826123f2565b50565b600a545f90610d88906001600160a01b031683610ddd565b60606005805461117c90613589565b80601f01602080910402602001604051908101604052809291908181526020018280546111a890613589565b80156111f35780601f106111ca576101008083540402835291602001916111f3565b820191905f5260205f20905b8154815290600101906020018083116111d657829003601f168201915b5050505050905090565b600454158061121257506112126106a06122cb565b61122e5760405162461bcd60e51b8152600401610d5d906135bb565b5f9182526007602052604090912055565b600454158061125457506112546106a06122cb565b6112705760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b03165f908152601a60205260409020805460ff19169055565b5f818152600e6020908152604080832054601190925282205482911115610d88575f83815260116020908152604080832054600e909252909120546112d59190613712565b9392505050565b6112e46122cb565b6001600160a01b0316856001600160a01b0316148061130a575061130a85610c786122cb565b6113265760405162461bcd60e51b8152600401610d5d90613725565b61133385858585856124f1565b5050505050565b600d546001600160a01b03166113825760405162461bcd60e51b815260206004820152600d60248201526c111c9bdc08191a5cd8589b1959609a1b6044820152606401610d5d565b8161138d8483611c76565b10156113d15760405162461bcd60e51b8152602060048201526013602482015272111c9bdc081b1a5b5a5d08195e18d959591959606a1b6044820152606401610d5d565b600d5482906113e9906001600160a01b031685610cf7565b10156114375760405162461bcd60e51b815260206004820152601b60248201527f52616e206f7574206f6620617661696c61626c6520746f6b656e7300000000006044820152606401610d5d565b6114428383836126d3565b600d5460408051808201909152600381526203078360ec1b6020820152610ed8916001600160a01b031690839086908690612730565b600454158061148d575061148d6106a06122cb565b6114a95760405162461bcd60e51b8152600401610d5d906135bb565b600a80546001600160a01b0319166001600160a01b03831617905561115281611521565b60045415806114e257506114e26106a06122cb565b6114fe5760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b03165f908152601a60205260409020805460ff19166001179055565b600454158061153657506115366106a06122cb565b6115525760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b0381165f908152600b602052604090205460ff16611152576001600160a01b03165f818152600b60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055565b60605f6115e33384610cf7565b1115611684575f828152601960205260409020805461160190613589565b80601f016020809104026020016040519081016040528092919081815260200182805461162d90613589565b80156116785780601f1061164f57610100808354040283529160200191611678565b820191905f5260205f20905b81548152906001019060200180831161165b57829003601f168201915b50505050509050919050565b5f828152601860205260409020805461160190613589565b60045415806116b157506116b16106a06122cb565b6116cd5760405162461bcd60e51b8152600401610d5d906135bb565b60136116d98282613642565b5050565b606081518351146117425760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610d5d565b5f835167ffffffffffffffff81111561175d5761175d612f5e565b604051908082528060200260200182016040528015611786578160200160208202803683370190505b5090505f5b84518110156117fd576117d08582815181106117a9576117a9613773565b60200260200101518583815181106117c3576117c3613773565b6020026020010151610cf7565b8282815181106117e2576117e2613773565b60209081029190910101526117f681613787565b905061178b565b509392505050565b600454158061181a575061181a6106a06122cb565b6118365760405162461bcd60e51b8152600401610d5d906135bb565b5f918252600e602052604090912055565b600454158061185c575061185c6106a06122cb565b6118785760405162461bcd60e51b8152600401610d5d906135bb565b5f828152601860205260409020610ed88282613642565b60045415806118a457506118a46106a06122cb565b6118c05760405162461bcd60e51b8152600401610d5d906135bb565b5f5b600454811015611928575f60035f600484815481106118e3576118e3613773565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790558061192081613787565b9150506118c2565b5061193460045f612e56565b565b600454158061194b575061194b6106a06122cb565b6119675760405162461bcd60e51b8152600401610d5d906135bb565b5f918252600f602052604090912055565b600454158061198d575061198d6106a06122cb565b6119a95760405162461bcd60e51b8152600401610d5d906135bb565b600a546116d9906001600160a01b0316838361216f565b5f81815260186020526040902080546060919061160190613589565b60045415806119f157506119f16106a06122cb565b611a0d5760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b0381165f9081526003602052604090205460ff16611152576001600160a01b03165f818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055565b6004541580611aa65750611aa66106a06122cb565b611ac25760405162461bcd60e51b8152600401610d5d906135bb565b60166116d98282613642565b60405162461bcd60e51b815260206004820152601260248201527113d4115490551253d397d11254d05093115160721b6044820152606401610d5d565b6004541580611b205750611b206106a06122cb565b611b3c5760405162461bcd60e51b8152600401610d5d906135bb565b5f8281526012602090815260408083208380529091529020610ed88282613642565b6060600c8054806020026020016040519081016040528092919081815260200182805480156111f357602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611b96575050505050905090565b600d548290611bd5906001600160a01b031685610cf7565b1015611c0e5760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b6044820152606401610d5d565b6114428383612860565b5f81815260196020526040902080546060919061160190613589565b6004541580611c495750611c496106a06122cb565b611c655760405162461bcd60e51b8152600401610d5d906135bb565b5f9182526008602052604090912055565b5f80611c8184611290565b5f858152600f6020908152604080832054601083528184206001600160a01b038916855290925282205492935090911015611cf1575f8581526010602090815260408083206001600160a01b0388168452825280832054888452600f90925290912054611cee9190613712565b90505b80821115611d02579150610d889050565b509050610d88565b6004541580611d1f5750611d1f6106a06122cb565b611d3b5760405162461bcd60e51b8152600401610d5d906135bb565b60056116d98282613642565b60158054610e1190613589565b606060048054806020026020016040519081016040528092919081815260200182805480156111f357602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311611b96575050505050905090565b6116d9611dbd6122cb565b8383612949565b5f828152601260209081526040808320848452909152812080546060929190611dec90613589565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1890613589565b8015611e635780601f10611e3a57610100808354040283529160200191611e63565b820191905f5260205f20905b815481529060010190602001808311611e4657829003601f168201915b5050505050905080515f03611f035760138054611e7f90613589565b80601f0160208091040260200160405190810160405280929190818152602001828054611eab90613589565b8015611ef65780601f10611ecd57610100808354040283529160200191611ef6565b820191905f5260205f20905b815481529060010190602001808311611ed957829003601f168201915b5050505050915050610d88565b5f84815260126020908152604080832086845290915290208054611e7f90613589565b6004541580611f3b5750611f3b6106a06122cb565b611f575760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b0381165f908152600b602052604090205460ff16611fbe5760405162461bcd60e51b815260206004820181905260248201527f54617267657420636f6e7472616374206973206e6f7420617661696c61626c656044820152606401610d5d565b6001600160a01b0381165f908152600b60205260409020805460ff19169055611152600c826123f2565b6004541580611ffd5750611ffd6106a06122cb565b6120195760405162461bcd60e51b8152600401610d5d906135bb565b60156116d98282613642565b600454158061203a575061203a6106a06122cb565b6120565760405162461bcd60e51b8152600401610d5d906135bb565b60146116d98282613642565b600454158061207757506120776106a06122cb565b6120935760405162461bcd60e51b8152600401610d5d906135bb565b5f83815260126020908152604080832083805290915290206120b58282613642565b50505050565b60045415806120d057506120d06106a06122cb565b6120ec5760405162461bcd60e51b8152600401610d5d906135bb565b6120b5848484846040518060400160405280600381526020016203078360ec1b815250612730565b600d54829061212c906001600160a01b031685610cf7565b10156121655760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b6044820152606401610d5d565b6114428383612a28565b600454158061218457506121846106a06122cb565b6121a05760405162461bcd60e51b8152600401610d5d906135bb565b6001600160a01b039092165f9081526009602090815260408083209383529290522055565b60045415806121da57506121da6106a06122cb565b6121f65760405162461bcd60e51b8152600401610d5d906135bb565b600680546001600160a01b0319166001600160a01b03831617905550565b600454158061222957506122296106a06122cb565b6122455760405162461bcd60e51b8152600401610d5d906135bb565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b61226f6122cb565b6001600160a01b0316856001600160a01b03161480612295575061229585610c786122cb565b6122b15760405162461bcd60e51b8152600401610d5d90613725565b6113338585858585612730565b60168054610e1190613589565b5f6122d4612a41565b905090565b6001600160a01b0384166123395760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610d5d565b5f6123426122cb565b90505f61234e85612a75565b90505f61235a85612a75565b90505f868152602081815260408083206001600160a01b038b1684529091528120805487929061238b90849061379f565b909155505060408051878152602081018790526001600160a01b03808a16925f92918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46123e9835f89898989612abe565b50505050505050565b5f5b8254811015610ed857816001600160a01b031683828154811061241957612419613773565b5f918252602090912001546001600160a01b0316036124df578254839061244290600190613712565b8154811061245257612452613773565b905f5260205f20015f9054906101000a90046001600160a01b031683828154811061247f5761247f613773565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550828054806124ba576124ba6137b2565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b806124e981613787565b9150506123f4565b81518351146125535760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610d5d565b6001600160a01b0384166125795760405162461bcd60e51b8152600401610d5d906137c6565b5f6125826122cb565b90505f5b8451811015612665575f8582815181106125a2576125a2613773565b602002602001015190505f8583815181106125bf576125bf613773565b6020908102919091018101515f84815280835260408082206001600160a01b038e16835290935291909120549091508181101561260e5760405162461bcd60e51b8152600401610d5d9061380b565b5f838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061264a90849061379f565b925050819055505050508061265e90613787565b9050612586565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516126b5929190613855565b60405180910390a46126cb818787878787612c18565b505050505050565b5f8381526010602090815260408083206001600160a01b03851684529091528120805484929061270490849061379f565b90915550505f838152601160205260408120805484929061272690849061379f565b9091555050505050565b6001600160a01b0384166127565760405162461bcd60e51b8152600401610d5d906137c6565b5f61275f6122cb565b90505f61276b85612a75565b90505f61277785612a75565b90505f868152602081815260408083206001600160a01b038c168452909152902054858110156127b95760405162461bcd60e51b8152600401610d5d9061380b565b5f878152602081815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906127f590849061379f565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4612855848a8a8a8a8a612abe565b505050505050505050565b5f828152600860205260408120541161288b5760405162461bcd60e51b8152600401610d5d90613882565b600d546001600160a01b03166128b35760405162461bcd60e51b8152600401610d5d90613882565b5f828152600860205260408120546128cc9083906138a9565b9050803410156129135760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b6044820152606401610d5d565b600d546040516001600160a01b03909116903480156108fc02915f818181858888f193505050501580156120b5573d5f803e3d5ffd5b816001600160a01b0316836001600160a01b0316036129bc5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610d5d565b6001600160a01b038381165f81815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600a546116d990839083906001600160a01b0316612cd2565b5f60143610801590612a5d57506006546001600160a01b031633145b15612a6f575060131936013560601c90565b50335b90565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f81518110612aad57612aad613773565b602090810291909101015292915050565b6001600160a01b0384163b156126cb5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190612b0290899089908890889088906004016138c0565b6020604051808303815f875af1925050508015612b3c575060408051601f3d908101601f19168201909252612b3991810190613904565b60015b612be857612b4861391f565b806308c379a003612b815750612b5c613937565b80612b675750612b83565b8060405162461bcd60e51b8152600401610d5d9190612f4c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610d5d565b6001600160e01b0319811663f23a6e6160e01b146123e95760405162461bcd60e51b8152600401610d5d906139c0565b6001600160a01b0384163b156126cb5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190612c5c9089908990889088908890600401613a08565b6020604051808303815f875af1925050508015612c96575060408051601f3d908101601f19168201909252612c9391810190613904565b60015b612ca257612b4861391f565b6001600160e01b0319811663bc197c8160e01b146123e95760405162461bcd60e51b8152600401610d5d906139c0565b6001600160a01b0381165f908152600b602052604090205460ff16612d395760405162461bcd60e51b815260206004820152601f60248201527f43555252454e43595f434f4e54524143545f4e4f545f535550504f52544544006044820152606401610d5d565b5f612d448285610ddd565b11612d615760405162461bcd60e51b8152600401610d5d90613882565b600d546001600160a01b0316612d895760405162461bcd60e51b8152600401610d5d90613882565b6001600160a01b038116612daf5760405162461bcd60e51b8152600401610d5d90613882565b5f612dba8285610ddd565b612dc490846138a9565b9050816001600160a01b0381166323b872dd612dde6122cb565b600d5460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604481018590526064016020604051808303815f875af1158015612e32573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126cb9190613a65565b5080545f8255905f5260205f209081019061115291905b80821115612e80575f8155600101612e6d565b5090565b5f60208284031215612e94575f80fd5b5035919050565b6001600160a01b0381168114611152575f80fd5b5f8060408385031215612ec0575f80fd5b8235612ecb81612e9b565b946020939093013593505050565b6001600160e01b031981168114611152575f80fd5b5f60208284031215612efe575f80fd5b81356112d581612ed9565b5f81518084525f5b81811015612f2d57602081850181015186830182015201612f11565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f6112d56020830184612f09565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f1916810167ffffffffffffffff81118282101715612f9857612f98612f5e565b6040525050565b5f82601f830112612fae575f80fd5b813567ffffffffffffffff811115612fc857612fc8612f5e565b604051612fdf601f8301601f191660200182612f72565b818152846020838601011115612ff3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215613020575f80fd5b82359150602083013567ffffffffffffffff81111561303d575f80fd5b61304985828601612f9f565b9150509250929050565b5f805f60608486031215613065575f80fd5b833561307081612e9b565b95602085013595506040909401359392505050565b5f60208284031215613095575f80fd5b81356112d581612e9b565b5f80604083850312156130b1575f80fd5b8235915060208301356130c381612e9b565b809150509250929050565b5f80604083850312156130df575f80fd5b50508035926020909101359150565b5f67ffffffffffffffff82111561310757613107612f5e565b5060051b60200190565b5f82601f830112613120575f80fd5b8135602061312d826130ee565b60405161313a8282612f72565b83815260059390931b8501820192828101915086841115613159575f80fd5b8286015b84811015613174578035835291830191830161315d565b509695505050505050565b5f805f805f60a08688031215613193575f80fd5b853561319e81612e9b565b945060208601356131ae81612e9b565b9350604086013567ffffffffffffffff808211156131ca575f80fd5b6131d689838a01613111565b945060608801359150808211156131eb575f80fd5b6131f789838a01613111565b9350608088013591508082111561320c575f80fd5b5061321988828901612f9f565b9150509295509295909350565b5f805f60608486031215613238575f80fd5b8335925060208401359150604084013561325181612e9b565b809150509250925092565b5f6020828403121561326c575f80fd5b813567ffffffffffffffff811115613282575f80fd5b61328e84828501612f9f565b949350505050565b5f80604083850312156132a7575f80fd5b823567ffffffffffffffff808211156132be575f80fd5b818501915085601f8301126132d1575f80fd5b813560206132de826130ee565b6040516132eb8282612f72565b83815260059390931b850182019282810191508984111561330a575f80fd5b948201945b8386101561333157853561332281612e9b565b8252948201949082019061330f565b96505086013592505080821115613346575f80fd5b5061304985828601613111565b5f8151808452602080850194508084015f5b8381101561338157815187529582019590820190600101613365565b509495945050505050565b602081525f6112d56020830184613353565b5f805f80608085870312156133b1575f80fd5b843593506020850135925060408501356133ca81612e9b565b915060608501356133da81612e9b565b939692955090935050565b602080825282518282018190525f9190848201906040850190845b818110156134255783516001600160a01b031683529284019291840191600101613400565b50909695505050505050565b8015158114611152575f80fd5b5f806040838503121561344f575f80fd5b823561345a81612e9b565b915060208301356130c381613431565b5f805f6060848603121561347c575f80fd5b8335925060208401359150604084013567ffffffffffffffff8111156134a0575f80fd5b6134ac86828701612f9f565b9150509250925092565b5f805f80608085870312156134c9575f80fd5b84356134d481612e9b565b935060208501356134e481612e9b565b93969395505050506040820135916060013590565b5f806040838503121561350a575f80fd5b823561351581612e9b565b915060208301356130c381612e9b565b5f805f805f60a08688031215613539575f80fd5b853561354481612e9b565b9450602086013561355481612e9b565b93506040860135925060608601359150608086013567ffffffffffffffff81111561357d575f80fd5b61321988828901612f9f565b600181811c9082168061359d57607f821691505b60208210810361103f57634e487b7160e01b5f52602260045260245ffd5b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b601f821115610ed8575f81815260208120601f850160051c810160208610156136235750805b601f850160051c820191505b818110156126cb5782815560010161362f565b815167ffffffffffffffff81111561365c5761365c612f5e565b6136708161366a8454613589565b846135fd565b602080601f8311600181146136a3575f841561368c5750858301515b5f19600386901b1c1916600185901b1785556126cb565b5f85815260208120601f198616915b828110156136d1578886015182559484019460019091019084016136b2565b50858210156136ee57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d8857610d886136fe565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201613798576137986136fe565b5060010190565b80820180821115610d8857610d886136fe565b634e487b7160e01b5f52603160045260245ffd5b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081525f6138676040830185613353565b82810360208401526138798185613353565b95945050505050565b6020808252600d908201526c14d1531317d11254d050931151609a1b604082015260600190565b8082028115828204841417610d8857610d886136fe565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f906138f990830184612f09565b979650505050505050565b5f60208284031215613914575f80fd5b81516112d581612ed9565b5f60033d1115612a725760045f803e505f5160e01c90565b5f60443d10156139445790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561397457505050505090565b828501915081518181111561398c5750505050505090565b843d87010160208285010111156139a65750505050505090565b6139b560208286010187612f72565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f90613a3390830186613353565b8281036060840152613a458186613353565b90508281036080840152613a598185612f09565b98975050505050505050565b5f60208284031215613a75575f80fd5b81516112d58161343156fea26469706673582212201b01a1d9950fb7654cfe9cb2905f388e502b806552928014867dc71bb89914b264736f6c63430008140033",
"linkReferences": {},
"deployedLinkReferences": {}
}