[ { "inputs": [ { "internalType": "address", "name": "forwarder_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "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": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "indexed": false, "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "BuySignature", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "indexed": false, "internalType": "bytes", "name": "signature", "type": "bytes" }, { "indexed": false, "internalType": "uint256[]", "name": "ids1", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values1", "type": "uint256[]" } ], "name": "ExchangeSignature", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "indexed": false, "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "MintSignature", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "indexed": false, "internalType": "bytes", "name": "signature", "type": "bytes" }, { "indexed": false, "internalType": "uint256[]", "name": "ids1", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values1", "type": "uint256[]" } ], "name": "RedeemSignature", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "name": "UseNonce", "type": "event" }, { "inputs": [], "name": "BUY_HASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "EXCHANGE_HASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINT_HASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REDEEM_HASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "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": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOfLocked", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bridge", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }, { "internalType": "address", "name": "payment", "type": "address" }, { "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "buy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }, { "internalType": "uint256[]", "name": "ids1", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values1", "type": "uint256[]" }, { "internalType": "address", "name": "erc", "type": "address" } ], "name": "exchange", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "string", "name": "uri_", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "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": "account", "type": "address" } ], "name": "isBlacklist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "isIdLocked", "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": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "lockBalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }, { "internalType": "uint256[]", "name": "ids1", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values1", "type": "uint256[]" } ], "name": "redeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "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": "value", "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", "name": "account", "type": "address" }, { "internalType": "bool", "name": "enable", "type": "bool" } ], "name": "setBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "setBridge", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "bool", "name": "enable", "type": "bool" } ], "name": "setIdLocked", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "setOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "setSigner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "signer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "trustedForwarder", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "useNonce", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040523480156200001157600080fd5b50604051620041c8380380620041c8833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051614126620000a2600039600081816104b20152818161053901526123f601526141266000f3fe608060405234801561001057600080fd5b50600436106102685760003560e01c80636c19e78311610151578063a6487c53116100c3578063e4cbb46e11610087578063e4cbb46e146106a8578063e78cea92146106bb578063e985e9c5146106ce578063ed86ddd3146106e1578063f242432a146106f4578063f2fde38b1461070757600080fd5b8063a6487c5314610609578063b3ab15fb1461061c578063bd85b0391461062f578063d5e5f8c71461066e578063d97f4b531461069557600080fd5b80638b025ce7116101155780638b025ce71461058b5780638da5cb5b146105c05780638dd14802146105c857806395d89b41146105db578063a22cb465146105e3578063a5595683146105f657600080fd5b80636c19e7831461051c578063715018a61461052f5780637da0a877146105375780637ecebe001461055d57806384b0196e1461057057600080fd5b80632eb2c2d6116101ea5780634e1273f4116101ae5780634e1273f41461042e5780634f558e791461044e578063570ca7351461048f578063572b6c05146104a25780635bb55c38146104e257806367defccd146104f557600080fd5b80632eb2c2d6146103a2578063333e99db146103b5578063337b5a50146103e15780633b3c977e146103f4578063440703d71461041b57600080fd5b8063118ba13511610231578063118ba13514610305578063153b0d1e1461031a57806318160ddd1461032d578063238ac9331461035457806325f4c99d1461037f57600080fd5b8062fdd58e1461026d57806301ffc9a71461029357806306fdde03146102b65780630e0cd852146102cb5780630e89341c146102f2575b600080fd5b61028061027b36600461305f565b61071a565b6040519081526020015b60405180910390f35b6102a66102a136600461309f565b610751565b604051901515815260200161028a565b6102be6107a1565b60405161028a9190613102565b6102807ff4c40b3fad3744b8cb501a3de236811386b09a1b6ef53de21b91a301412a7beb81565b6102be610300366004613115565b61082f565b6103186103133660046131ba565b6108f4565b005b61031861032836600461328b565b610bc0565b7f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e280154610280565b600354610367906001600160a01b031681565b6040516001600160a01b03909116815260200161028a565b6102a661038d366004613115565b60009081526006602052604090205460ff1690565b6103186103b0366004613405565b610c20565b6102a66103c33660046134ae565b6001600160a01b031660009081526005602052604090205460ff1690565b6103186103ef3660046134c9565b610cb5565b6102807f68b55f81fe98419b57eba1a61b2928703119988ae03c5194b049413815001dee81565b6103186104293660046135b9565b610fc3565b61044161043c366004613663565b6111da565b60405161028a919061375d565b6102a661045c366004613115565b60009081527f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e28006020526040902054151590565b600454610367906001600160a01b031681565b6102a66104b03660046134ae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b6103186104f0366004613770565b6112ae565b6102807fc8cecb48929d864c0195eabaae4862fd3e58bf57db49a7d8274f2cb7d5daeb4781565b61031861052a3660046134ae565b611303565b61031861132d565b7f0000000000000000000000000000000000000000000000000000000000000000610367565b61028061056b3660046134ae565b611341565b61057861137b565b60405161028a9796959493929190613795565b61028061059936600461305f565b60009081526007602090815260408083206001600160a01b03949094168352929052205490565b610367611427565b6103186105d63660046134ae565b611455565b6102be61147f565b6103186105f136600461328b565b61148c565b610318610604366004613805565b6114a2565b610318610617366004613838565b6114fe565b61031861062a3660046134ae565b61178f565b61028061063d366004613115565b60009081527f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e2800602052604090205490565b6102807fb736064e74ffa85ba3c3b5ed7d825a04fa962525b6f74bd7737e4d05514ffda581565b6103186106a33660046134ae565b6117b9565b6103186106b63660046138d1565b611889565b600254610367906001600160a01b031681565b6102a66106dc36600461393c565b611904565b6103186106ef36600461396f565b611951565b610318610702366004613a6f565b611d33565b6103186107153660046134ae565b611da6565b60008181526000805160206140d1833981519152602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061078257506001600160e01b031982166303a24d0760e21b145b8061074b57506301ffc9a760e01b6001600160e01b031983161461074b565b600080546107ae90613ad3565b80601f01602080910402602001604051908101604052809291908181526020018280546107da90613ad3565b80156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505081565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c450280546060916000805160206140d18339815191529161086e90613ad3565b80601f016020809104026020016040519081016040528092919081815260200182805461089a90613ad3565b80156108e75780601f106108bc576101008083540402835291602001916108e7565b820191906000526020600020905b8154815290600101906020018083116108ca57829003601f168201915b5050505050915050919050565b60007fc8cecb48929d864c0195eabaae4862fd3e58bf57db49a7d8274f2cb7d5daeb478a8a8a60405160200161092b929190613b0d565b604051602081830303815290604052805190602001208989604051602001610954929190613b0d565b604051602081830303815290604052805190602001206109738e611341565b6040805160208101969096526001600160a01b03948516908601526060850192909252608084015260a0830152841660c082015260e0810183905261010001604051602081830303815290604052805190602001209050610a1585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0f9250859150611de49050565b90611e11565b6003546001600160a01b03908116911614610a4b5760405162461bcd60e51b8152600401610a4290613b36565b60405180910390fd5b610a548a611e3b565b50826001600160a01b03166323b872dd610a6c611e7d565b610a74611427565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018590526064016020604051808303816000875af1158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec9190613b6b565b50610b698a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c918291850190849080828437600092018290525060408051602081019091529081529250611e8c915050565b896001600160a01b03167f8a2de5e5830b9a937d8c2d5b8342826c456b9f34ec1c5cdb0c1e4be1378c07138a8a8a8a8a8a604051610bac96959493929190613be3565b60405180910390a250505050505050505050565b610bc8611e7d565b6004546001600160a01b03908116911614610bf55760405162461bcd60e51b8152600401610a4290613c2c565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000610c2a611e7d565b90506000816001600160a01b03163b118015610c5357506002546001600160a01b038281169116145b15610ca0576002546001600160a01b0390811690871603610c7f57610c7a85858585611e8c565b610cad565b6002546001600160a01b0390811690861603610c7a57610c7a868585611ec4565b610cad8686868686611f0f565b505050505050565b6000610cbf611e7d565b905060007ff4c40b3fad3744b8cb501a3de236811386b09a1b6ef53de21b91a301412a7beb828d8d604051602001610cf8929190613b0d565b604051602081830303815290604052805190602001208c8c604051602001610d21929190613b0d565b60405160208183030381529060405280519060200120610d4086611341565b8a8a604051602001610d53929190613b0d565b604051602081830303815290604052805190602001208989604051602001610d7c929190613b0d565b60408051601f198184030181528282528051602091820120908301989098526001600160a01b03909616958101959095526060850193909352608084019190915260a083015260c082015260e081019190915261010001604051602081830303815290604052805190602001209050610e3088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0f9250859150611de49050565b6003546001600160a01b03908116911614610e5d5760405162461bcd60e51b8152600401610a4290613b36565b610e6682611e3b565b50610ed58287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a925089918291850190849080828437600092019190915250611ec492505050565b610f62828d8d80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508c8c80806020026020016040519081016040528093929190818152602001838360200280828437600092018290525060408051602081019091529081529250611e8c915050565b816001600160a01b03167f844128fda578542b8819355570a85dd209699b84f4c3e461bdf8cf85fc5ee6cc8d8d8d8d8d8d8d8d8d8d604051610fad9a99989796959493929190613c5c565b60405180910390a2505050505050505050505050565b60007f68b55f81fe98419b57eba1a61b2928703119988ae03c5194b049413815001dee888888604051602001610ffa929190613b0d565b604051602081830303815290604052805190602001208787604051602001611023929190613b0d565b604051602081830303815290604052805190602001206110428c611341565b6040805160208101969096526001600160a01b03909416938501939093526060840191909152608083015260a082015260c0016040516020818303038152906040528051906020012090506110d283838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0f9250859150611de49050565b6003546001600160a01b039081169116146110ff5760405162461bcd60e51b8152600401610a4290613b36565b61110888611e3b565b506111858888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808c0282810182019093528b82529093508b92508a918291850190849080828437600092018290525060408051602081019091529081529250611e8c915050565b876001600160a01b03167fd07e0fb6d9e12b026c61cc3eebdb562834a62c6c62d531b5c1e8286c63ab901d8888888888886040516111c896959493929190613be3565b60405180910390a25050505050505050565b6060815183511461120b5781518351604051635b05999160e01b815260048101929092526024820152604401610a42565b600083516001600160401b03811115611226576112266132c2565b60405190808252806020026020018201604052801561124f578160200160208202803683370190505b50905060005b84518110156112a6576020808202860101516112799060208084028701015161071a565b82828151811061128b5761128b613cd3565b602090810291909101015261129f81613cff565b9050611255565b509392505050565b6112b6611e7d565b6004546001600160a01b039081169116146112e35760405162461bcd60e51b8152600401610a4290613c2c565b600091825260066020526040909120805460ff1916911515919091179055565b61130b611f82565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b611335611f82565b61133f6000611fd6565b565b6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052604090205490565b600060608082808083816000805160206140b183398151915280549091501580156113a857506001810154155b6113ec5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610a42565b6113f4612047565b6113fc61210a565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b61145d611f82565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600180546107ae90613ad3565b61149e611497611e7d565b8383612149565b5050565b6114aa611e7d565b6004546001600160a01b039081169116146114d75760405162461bcd60e51b8152600401610a4290613c2c565b60009182526007602090815260408084206001600160a01b03909516845293905291902055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156115435750825b90506000826001600160401b0316600114801561155f5750303b155b90508115801561156d575080155b1561158b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156115b557845460ff60401b1916600160401b1785555b60008690036115f55760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207572695f60a01b6044820152606401610a42565b60008a90036116365760405162461bcd60e51b815260206004820152600d60248201526c696e76616c6964206e616d655f60981b6044820152606401610a42565b60008890036116795760405162461bcd60e51b815260206004820152600f60248201526e696e76616c69642073796d626f6c5f60881b6044820152606401610a42565b60006116868b8d83613d5e565b506001611694898b83613d5e565b506116d487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121f192505050565b61172c8b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b602082015291506122029050565b61173c611737611e7d565b612214565b831561178257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b611797611f82565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6117c1611e7d565b6001600160a01b0316816001600160a01b031614806117f557506117e3611e7d565b6003546001600160a01b039081169116145b6118415760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f742073656e646572206e6f72207369676e6572006044820152606401610a42565b806001600160a01b03167f7243aab3c75cebfd96dc41ece7762eb023fc8c81e9ba2ce1d487876419b918b561187583611e3b565b60405190815260200160405180910390a250565b6118fe611894611e7d565b85858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808902828101820190935288825290935088925087918291850190849080828437600092019190915250611ec492505050565b50505050565b6001600160a01b0391821660009081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45016020908152604080832093909416825291909152205460ff1690565b600061195b611e7d565b905060007fb736064e74ffa85ba3c3b5ed7d825a04fa962525b6f74bd7737e4d05514ffda5828e8e604051602001611994929190613b0d565b604051602081830303815290604052805190602001208d8d6040516020016119bd929190613b0d565b604051602081830303815290604052805190602001206119dc86611341565b8b8b6040516020016119ef929190613b0d565b604051602081830303815290604052805190602001208a8a604051602001611a18929190613b0d565b60408051601f198184030181528282528051602091820120908301989098526001600160a01b03968716908201526060810194909452608084019290925260a083015260c082015260e0810192909252841661010082015261012001604051602081830303815290604052805190602001209050611ad189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0f9250859150611de49050565b6003546001600160a01b03908116911614611afe5760405162461bcd60e51b8152600401610a4290613b36565b611b0782611e3b565b50611b226001600160a01b0384166380ac58cd60e01b612225565b15611bd457826001600160a01b031663b88d4fde83611b3f611427565b8a8a6000818110611b5257611b52613cd3565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152608060648201526000608482015260a401600060405180830381600087803b158015611bb757600080fd5b505af1158015611bcb573d6000803e3d6000fd5b50505050611c44565b826001600160a01b0316632eb2c2d683611bec611427565b8a8a8a8a6040518763ffffffff1660e01b8152600401611c1196959493929190613e1d565b600060405180830381600087803b158015611c2b57600080fd5b505af1158015611c3f573d6000803e3d6000fd5b505050505b611cd1828e8e80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092018290525060408051602081019091529081529250611e8c915050565b816001600160a01b03167f26fc429fa7140cdb8a19506a951c6320648c310163ab40c115ff81f9f8cd848f8e8e8e8e8e8e8e8e8e8e604051611d1c9a99989796959493929190613c5c565b60405180910390a250505050505050505050505050565b6000611d3d611e7d565b9050806001600160a01b0316866001600160a01b031614158015611d685750611d668682611904565b155b15611d995760405163711bec9160e11b81526001600160a01b03808316600483015287166024820152604401610a42565b610cad8686868686612248565b611dae611f82565b6001600160a01b038116611dd857604051631e4fbdf760e01b815260006004820152602401610a42565b611de181611fd6565b50565b600061074b611df16122d6565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611e2186866122e0565b925092509250611e31828261232d565b5090949350505050565b6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6000611e876123e6565b905090565b6001600160a01b038416611eb657604051632bfa23e760e11b815260006004820152602401610a42565b6118fe60008585858561245b565b6001600160a01b038316611eed57604051626a0d4560e21b815260006004820152602401610a42565b611f0a83600084846040518060200160405280600081525061245b565b505050565b6000611f19611e7d565b9050806001600160a01b0316866001600160a01b031614158015611f445750611f428682611904565b155b15611f755760405163711bec9160e11b81526001600160a01b03808316600483015287166024820152604401610a42565b610cad86868686866124bf565b611f8a611e7d565b6001600160a01b0316611f9b611427565b6001600160a01b03161461133f57611fb1611e7d565b60405163118cdaa760e01b81526001600160a01b039091166004820152602401610a42565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060916000805160206140b18339815191529161208690613ad3565b80601f01602080910402602001604051908101604052809291908181526020018280546120b290613ad3565b80156120ff5780601f106120d4576101008083540402835291602001916120ff565b820191906000526020600020905b8154815290600101906020018083116120e257829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060916000805160206140b18339815191529161208690613ad3565b6000805160206140d18339815191526001600160a01b0383166121815760405162ced3e160e81b815260006004820152602401610a42565b6001600160a01b038481166000818152600184016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6121f961251f565b611de181612568565b61220a61251f565b61149e8282612579565b61221c61251f565b611de1816125da565b6000612230836125e2565b801561224157506122418383612615565b9392505050565b6001600160a01b03841661227257604051632bfa23e760e11b815260006004820152602401610a42565b6001600160a01b03851661229b57604051626a0d4560e21b815260006004820152602401610a42565b604080516001808252602082018690528183019081526060820185905260808201909252906122cd878784848761245b565b50505050505050565b6000611e8761269f565b6000806000835160410361231a5760208401516040850151606086015160001a61230c88828585612713565b955095509550505050612326565b50508151600091506002905b9250925092565b600082600381111561234157612341613e7c565b0361234a575050565b600182600381111561235e5761235e613e7c565b0361237c5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561239057612390613e7c565b036123b15760405163fce698f760e01b815260048101829052602401610a42565b60038260038111156123c5576123c5613e7c565b0361149e576040516335e2f38360e21b815260048101829052602401610a42565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156124235750808210155b15612453576000366124358385613e92565b612440928290613ea5565b61244991613ecf565b60601c9250505090565b339250505090565b612467858585856127e2565b6001600160a01b038416156124b8576000612480611e7d565b905083516001036124aa57602084810151908401516124a38389898585896128fe565b5050610cad565b610cad818787878787612a22565b5050505050565b6001600160a01b0384166124e957604051632bfa23e760e11b815260006004820152602401610a42565b6001600160a01b03851661251257604051626a0d4560e21b815260006004820152602401610a42565b6124b8858585858561245b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661133f57604051631afcd79f60e31b815260040160405180910390fd5b61257061251f565b611de181612b0b565b61258161251f565b6000805160206140b18339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026125bb8482613f04565b50600381016125ca8382613f04565b5060008082556001909101555050565b611dae61251f565b60006125f5826301ffc9a760e01b612615565b801561074b575061260e826001600160e01b0319612615565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d91506000519050828015612688575060208210155b80156126945750600081115b979650505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6126ca612b45565b6126d2612baf565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561274e57506000915060039050826127d8565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156127a2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166127ce575060009250600191508290506127d8565b9250600091508190505b9450945094915050565b6001600160a01b038416156128f2576001600160a01b03841660009081526005602052604090205460ff16156128505760405162461bcd60e51b81526020600482015260136024820152721cd95b99195c881a5b88189b1858dadb1a5cdd606a1b6044820152606401610a42565b60005b82518110156128f05761289a858585848151811061287357612873613cd3565b602002602001015185858151811061288d5761288d613cd3565b6020026020010151612bf3565b156128de5760405162461bcd60e51b81526020600482015260146024820152731d1bdad95b88185b1c9958591e481b1bd8dad95960621b6044820152606401610a42565b806128e881613cff565b915050612853565b505b6118fe84848484612c86565b6001600160a01b0384163b15610cad5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906129429089908990889088908890600401613fc3565b6020604051808303816000875af192505050801561297d575060408051601f3d908101601f1916820190925261297a91810190613ffd565b60015b6129e6573d8080156129ab576040519150601f19603f3d011682016040523d82523d6000602084013e6129b0565b606091505b5080516000036129de57604051632bfa23e760e11b81526001600160a01b0386166004820152602401610a42565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b146122cd57604051632bfa23e760e11b81526001600160a01b0386166004820152602401610a42565b6001600160a01b0384163b15610cad5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190612a66908990899088908890889060040161401a565b6020604051808303816000875af1925050508015612aa1575060408051601f3d908101601f19168201909252612a9e91810190613ffd565b60015b612acf573d8080156129ab576040519150601f19603f3d011682016040523d82523d6000602084013e6129b0565b6001600160e01b0319811663bc197c8160e01b146122cd57604051632bfa23e760e11b81526001600160a01b0386166004820152602401610a42565b6000805160206140d18339815191527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4502611f0a8382613f04565b60006000805160206140b183398151915281612b5f612047565b805190915015612b7757805160209091012092915050565b81548015612b86579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b60006000805160206140b183398151915281612bc961210a565b805190915015612be157805160209091012092915050565b60018201548015612b86579392505050565b60008281526007602090815260408083206001600160a01b038816845290915281205482612c21878661071a565b612c2b9190613e92565b1080612c7d57506001600160a01b03841615801590612c635750612c4d611427565b6001600160a01b0316846001600160a01b031614155b8015612c7d575060008381526006602052604090205460ff165b95945050505050565b7f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e2800612cb385858585612e0a565b6001600160a01b038516612d6a576000805b8451811015612d4e576000848281518110612ce257612ce2613cd3565b6020026020010151905080846000016000888581518110612d0557612d05613cd3565b602002602001015181526020019081526020016000206000828254612d2a9190614078565b90915550612d3a90508184614078565b92505080612d4790613cff565b9050612cc5565b5080826001016000828254612d639190614078565b9091555050505b6001600160a01b0384166124b8576000805b8451811015612df6576000848281518110612d9957612d99613cd3565b6020026020010151905080846000016000888581518110612dbc57612dbc613cd3565b602002602001015181526020019081526020016000206000828254039250508190555080830192505080612def90613cff565b9050612d7c565b506001820180549190910390555050505050565b805182516000805160206140d18339815191529114612e495782518251604051635b05999160e01b815260048101929092526024820152604401610a42565b6000612e53611e7d565b905060005b8451811015612f63576020818102868101820151908601909101516001600160a01b03891615612f0b576000828152602086815260408083206001600160a01b038d16845290915290205481811015612ee4576040516303dee4c560e01b81526001600160a01b038b166004820152602481018290526044810183905260648101849052608401610a42565b6000838152602087815260408083206001600160a01b038e16845290915290209082900390555b6001600160a01b03881615612f50576000828152602086815260408083206001600160a01b038c16845290915281208054839290612f4a908490614078565b90915550505b505080612f5c90613cff565b9050612e58565b508351600103612fe45760208401516000906020850151909150866001600160a01b0316886001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612fd5929190918252602082015260400190565b60405180910390a45050610cad565b846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161303392919061408b565b60405180910390a4505050505050565b80356001600160a01b038116811461305a57600080fd5b919050565b6000806040838503121561307257600080fd5b61307b83613043565b946020939093013593505050565b6001600160e01b031981168114611de157600080fd5b6000602082840312156130b157600080fd5b813561224181613089565b6000815180845260005b818110156130e2576020818501810151868301820152016130c6565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061224160208301846130bc565b60006020828403121561312757600080fd5b5035919050565b60008083601f84011261314057600080fd5b5081356001600160401b0381111561315757600080fd5b6020830191508360208260051b850101111561317257600080fd5b9250929050565b60008083601f84011261318b57600080fd5b5081356001600160401b038111156131a257600080fd5b60208301915083602082850101111561317257600080fd5b600080600080600080600080600060c08a8c0312156131d857600080fd5b6131e18a613043565b985060208a01356001600160401b03808211156131fd57600080fd5b6132098d838e0161312e565b909a50985060408c013591508082111561322257600080fd5b61322e8d838e0161312e565b909850965060608c013591508082111561324757600080fd5b506132548c828d01613179565b9095509350613267905060808b01613043565b915060a08a013590509295985092959850929598565b8015158114611de157600080fd5b6000806040838503121561329e57600080fd5b6132a783613043565b915060208301356132b78161327d565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613300576133006132c2565b604052919050565b60006001600160401b03821115613321576133216132c2565b5060051b60200190565b600082601f83011261333c57600080fd5b8135602061335161334c83613308565b6132d8565b82815260059290921b8401810191818101908684111561337057600080fd5b8286015b8481101561338b5780358352918301918301613374565b509695505050505050565b600082601f8301126133a757600080fd5b81356001600160401b038111156133c0576133c06132c2565b6133d3601f8201601f19166020016132d8565b8181528460208386010111156133e857600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561341d57600080fd5b61342686613043565b945061343460208701613043565b935060408601356001600160401b038082111561345057600080fd5b61345c89838a0161332b565b9450606088013591508082111561347257600080fd5b61347e89838a0161332b565b9350608088013591508082111561349457600080fd5b506134a188828901613396565b9150509295509295909350565b6000602082840312156134c057600080fd5b61224182613043565b60008060008060008060008060008060a08b8d0312156134e857600080fd5b8a356001600160401b03808211156134ff57600080fd5b61350b8e838f0161312e565b909c509a5060208d013591508082111561352457600080fd5b6135308e838f0161312e565b909a50985060408d013591508082111561354957600080fd5b6135558e838f01613179565b909850965060608d013591508082111561356e57600080fd5b61357a8e838f0161312e565b909650945060808d013591508082111561359357600080fd5b506135a08d828e0161312e565b915080935050809150509295989b9194979a5092959850565b60008060008060008060006080888a0312156135d457600080fd5b6135dd88613043565b965060208801356001600160401b03808211156135f957600080fd5b6136058b838c0161312e565b909850965060408a013591508082111561361e57600080fd5b61362a8b838c0161312e565b909650945060608a013591508082111561364357600080fd5b506136508a828b01613179565b989b979a50959850939692959293505050565b6000806040838503121561367657600080fd5b82356001600160401b038082111561368d57600080fd5b818501915085601f8301126136a157600080fd5b813560206136b161334c83613308565b82815260059290921b840181019181810190898411156136d057600080fd5b948201945b838610156136f5576136e686613043565b825294820194908201906136d5565b9650508601359250508082111561370b57600080fd5b506137188582860161332b565b9150509250929050565b600081518084526020808501945080840160005b8381101561375257815187529582019590820190600101613736565b509495945050505050565b6020815260006122416020830184613722565b6000806040838503121561378357600080fd5b8235915060208301356132b78161327d565b60ff60f81b8816815260e0602082015260006137b460e08301896130bc565b82810360408401526137c681896130bc565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506137f78185613722565b9a9950505050505050505050565b60008060006060848603121561381a57600080fd5b61382384613043565b95602085013595506040909401359392505050565b6000806000806000806060878903121561385157600080fd5b86356001600160401b038082111561386857600080fd5b6138748a838b01613179565b9098509650602089013591508082111561388d57600080fd5b6138998a838b01613179565b909650945060408901359150808211156138b257600080fd5b506138bf89828a01613179565b979a9699509497509295939492505050565b600080600080604085870312156138e757600080fd5b84356001600160401b03808211156138fe57600080fd5b61390a8883890161312e565b9096509450602087013591508082111561392357600080fd5b506139308782880161312e565b95989497509550505050565b6000806040838503121561394f57600080fd5b61395883613043565b915061396660208401613043565b90509250929050565b600080600080600080600080600080600060c08c8e03121561399057600080fd5b6001600160401b03808d3511156139a657600080fd5b6139b38e8e358f0161312e565b909c509a5060208d01358110156139c957600080fd5b6139d98e60208f01358f0161312e565b909a50985060408d01358110156139ef57600080fd5b6139ff8e60408f01358f01613179565b909850965060608d0135811015613a1557600080fd5b613a258e60608f01358f0161312e565b909650945060808d0135811015613a3b57600080fd5b50613a4c8d60808e01358e0161312e565b9093509150613a5d60a08d01613043565b90509295989b509295989b9093969950565b600080600080600060a08688031215613a8757600080fd5b613a9086613043565b9450613a9e60208701613043565b9350604086013592506060860135915060808601356001600160401b03811115613ac757600080fd5b6134a188828901613396565b600181811c90821680613ae757607f821691505b602082108103613b0757634e487b7160e01b600052602260045260246000fd5b50919050565b60006001600160fb1b03831115613b2357600080fd5b8260051b80858437919091019392505050565b6020808252818101527f7369676e617475726520646f6573206e6f74206d617463682072657175657374604082015260600190565b600060208284031215613b7d57600080fd5b81516122418161327d565b81835260006001600160fb1b03831115613ba157600080fd5b8260051b80836020870137939093016020019392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b606081526000613bf760608301888a613b88565b8281036020840152613c0a818789613b88565b90508281036040840152613c1f818587613bba565b9998505050505050505050565b60208082526016908201527531b0b63632b91034b9903737ba1037b832b930ba37b960511b604082015260600190565b60a081526000613c7060a083018c8e613b88565b8281036020840152613c83818b8d613b88565b90508281036040840152613c9881898b613bba565b90508281036060840152613cad818789613b88565b90508281036080840152613cc2818587613b88565b9d9c50505050505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613d1157613d11613ce9565b5060010190565b601f821115611f0a57600081815260208120601f850160051c81016020861015613d3f5750805b601f850160051c820191505b81811015610cad57828155600101613d4b565b6001600160401b03831115613d7557613d756132c2565b613d8983613d838354613ad3565b83613d18565b6000601f841160018114613dbd5760008515613da55750838201355b600019600387901b1c1916600186901b1783556124b8565b600083815260209020601f19861690835b82811015613dee5786850135825560209485019460019092019101613dce565b5086821015613e0b5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b0387811682528616602082015260a060408201819052600090613e4a9083018688613b88565b8281036060840152613e5d818587613b88565b8381036080909401939093525050600081526020019695505050505050565b634e487b7160e01b600052602160045260246000fd5b8181038181111561074b5761074b613ce9565b60008085851115613eb557600080fd5b83861115613ec257600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015613efc5780818660140360031b1b83161692505b505092915050565b81516001600160401b03811115613f1d57613f1d6132c2565b613f3181613f2b8454613ad3565b84613d18565b602080601f831160018114613f665760008415613f4e5750858301515b600019600386901b1c1916600185901b178555610cad565b600085815260208120601f198616915b82811015613f9557888601518255948401946001909101908401613f76565b5085821015613fb35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090612694908301846130bc565b60006020828403121561400f57600080fd5b815161224181613089565b6001600160a01b0386811682528516602082015260a06040820181905260009061404690830186613722565b82810360608401526140588186613722565b9050828103608084015261406c81856130bc565b98975050505050505050565b8082018082111561074b5761074b613ce9565b60408152600061409e6040830185613722565b8281036020840152612c7d818561372256fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10088be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500a2646970667358221220384897a7ac0612da62e88a6465b80c632b3d40fd9e5963151eb5773f0ae9f6f864736f6c634300081400330000000000000000000000007979a1465c46c790c271e34e92d5f02b8dc99f6b