UNPKG

witnet-solidity-bridge

Version:

Witnet Solidity Bridge contracts for EVM-compatible chains

396 lines 1.11 MB
{ "contractName": "WitOracleRadonRequestFactoryModalsDefault", "abi": [ { "inputs": [ { "internalType": "address", "name": "_witOracle", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "by", "type": "address" }, { "indexed": true, "internalType": "address", "name": "master", "type": "address" }, { "indexed": true, "internalType": "address", "name": "clone", "type": "address" } ], "name": "Cloned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "inputs": [], "name": "base", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_commonRetrievalHash", "type": "bytes32" }, { "internalType": "bytes15", "name": "_crowdAttestationTallyHash", "type": "bytes15" } ], "name": "buildRadonRequestModal", "outputs": [ { "internalType": "contract IWitOracleRadonRequestModal", "name": "", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cloned", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_commonRetrievalHash", "type": "bytes32" }, { "internalType": "bytes15", "name": "_crowdAttestationTallyHash", "type": "bytes15" } ], "name": "determineAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCrowdAttestationTally", "outputs": [ { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDataResultType", "outputs": [ { "internalType": "enum Witnet.RadonDataTypes", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "url", "type": "string" } ], "name": "getDataSourceArgsCount", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDataSourcesAggregator", "outputs": [ { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRadonModalRetrieval", "outputs": [ { "components": [ { "internalType": "uint8", "name": "argsCount", "type": "uint8" }, { "internalType": "enum Witnet.RadonRetrievalMethods", "name": "method", "type": "uint8" }, { "internalType": "enum Witnet.RadonDataTypes", "name": "dataType", "type": "uint8" }, { "internalType": "string", "name": "url", "type": "string" }, { "internalType": "string", "name": "body", "type": "string" }, { "internalType": "string[2][]", "name": "headers", "type": "string[2][]" }, { "internalType": "bytes", "name": "radonScript", "type": "bytes" } ], "internalType": "struct Witnet.RadonRetrieval", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_commonRetrievalHash", "type": "bytes32" }, { "internalType": "bytes15", "name": "_crowdAttestationTallyHash", "type": "bytes15" } ], "name": "initialize", "outputs": [ { "internalType": "contract IWitOracleRadonRequestModal", "name": "", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "specs", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string[]", "name": "modalArgs", "type": "string[]" }, { "internalType": "string[]", "name": "modalUrls", "type": "string[]" } ], "name": "verifyRadonRequest", "outputs": [ { "internalType": "Witnet.RadonHash", "name": "", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "witOracle", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "class", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_witOracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"by\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"master\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"clone\",\"type\":\"address\"}],\"name\":\"Cloned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"base\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commonRetrievalHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes15\",\"name\":\"_crowdAttestationTallyHash\",\"type\":\"bytes15\"}],\"name\":\"buildRadonRequestModal\",\"outputs\":[{\"internalType\":\"contract IWitOracleRadonRequestModal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"class\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cloned\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commonRetrievalHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes15\",\"name\":\"_crowdAttestationTallyHash\",\"type\":\"bytes15\"}],\"name\":\"determineAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCrowdAttestationTally\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Witnet.RadonReduceOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonFilterOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"cborArgs\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonFilter[]\",\"name\":\"filters\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Witnet.RadonReducer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDataResultType\",\"outputs\":[{\"internalType\":\"enum Witnet.RadonDataTypes\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"getDataSourceArgsCount\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDataSourcesAggregator\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Witnet.RadonReduceOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonFilterOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"cborArgs\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonFilter[]\",\"name\":\"filters\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Witnet.RadonReducer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRadonModalRetrieval\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"argsCount\",\"type\":\"uint8\"},{\"internalType\":\"enum Witnet.RadonRetrievalMethods\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"enum Witnet.RadonDataTypes\",\"name\":\"dataType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"body\",\"type\":\"string\"},{\"internalType\":\"string[2][]\",\"name\":\"headers\",\"type\":\"string[2][]\"},{\"internalType\":\"bytes\",\"name\":\"radonScript\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonRetrieval\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commonRetrievalHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes15\",\"name\":\"_crowdAttestationTallyHash\",\"type\":\"bytes15\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"contract IWitOracleRadonRequestModal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"specs\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"modalArgs\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"modalUrls\",\"type\":\"string[]\"}],\"name\":\"verifyRadonRequest\",\"outputs\":[{\"internalType\":\"Witnet.RadonHash\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"witOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The Witnet Foundation\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"title\":\"Factory contract for building IWitOracleRadonRequestModal contracts as light-weight proxies.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"class()\":{\"notice\":\"Returns the name of the actual contract implementing the logic of this Witnet appliance.\"},\"cloned()\":{\"notice\":\"Tells whether this contract is a clone of `self()`\"},\"getCrowdAttestationTally()\":{\"notice\":\"=============================================================================================================== --- IWitOracleRadonRequestModal -------------------------------------------------------------------------------\"},\"initialized()\":{\"notice\":\"Tells whether a WitOracleRequest or a WitOracleRequestTemplate has been properly initialized.\"},\"specs()\":{\"notice\":\"Returns the ERC-165 id of the minimal functionality expected for this appliance.\"},\"witOracle()\":{\"notice\":\"Reference to the Witnet Request Board that all templates built out from this factory will refer to.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/trustless/WitOracleRadonRequestFactoryModalsDefault.sol\":\"WitOracleRadonRequestFactoryModalsDefault\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"project:/contracts/core/base/WitOracleRadonRequestFactoryModals.sol\":{\"keccak256\":\"0xd0f8e429111741babddd598e5aa390e8848c4e153272f43731719a2b8fbcde6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9dd0e2c180eb42840345fb0892c20f3ceb377cb0e53d92f4817d55993a2d0ab0\",\"dweb:/ipfs/QmYwqScKvMV1pGdoUFRG7kQG98fHZ5p5bQkaoQCFbwbxwf\"]},\"project:/contracts/core/trustless/WitOracleRadonRequestFactoryModalsDefault.sol\":{\"keccak256\":\"0x3bc024a86bdb85f6dd9eb1666ad7b7aec089f3dad3ff9367daff1b3e1ace023a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://663a70d496177736259b5cb39b8ade4fc9067258c7556b55af346e2a0b068dc0\",\"dweb:/ipfs/QmP2W5HQeDqmWbtmCYaYFMoHvayw2EoEjYvVFaVRpoiEXZ\"]},\"project:/contracts/interfaces/IWitAppliance.sol\":{\"keccak256\":\"0xd207ca54a1049445a3d99eea497d9b34c6dbdd44d771eee825e4c031bd2f447e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f81de32d868ff2881ed6fe97cc897e40b4b11d23cbe53a0e23cf3e68f9c0f0a3\",\"dweb:/ipfs/QmeeXmzmK5MAzt7Hf5DB2L81efKtTzZg9VbQ8sUiTqEk5c\"]},\"project:/contracts/interfaces/IWitOracle.sol\":{\"keccak256\":\"0x26cbe2074c0b3f545a46d95fad5e2280b67edcd958e4ae0b88f3a018aa11b805\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324bac61f65e3edb01c88b9b75ca17affd593be88da5753a93b3f5304d3f479\",\"dweb:/ipfs/QmcVmNV6smbFiPaxvuN8ShkqbDZsT1wfjnF7f3qs6ke7QG\"]},\"project:/contracts/interfaces/IWitOracleAppliance.sol\":{\"keccak256\":\"0xcd8e57eca7f8042c85a83264e2ff6d1cd7a9f1521831736d7f57bcc7800642e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c639668e9439d60770b5df77436088ae7bd0aeb1d1be446552a98b6c29138f0\",\"dweb:/ipfs/QmbN3f5YuKMSd2j9tjay3VEkiYibGWpbfbwRNyrxA8k4o4\"]},\"project:/contracts/interfaces/IWitOracleRadonRegistry.sol\":{\"keccak256\":\"0x437bbb89129311bd1cc8f6becd333df46109ec53b24d3159be942b225614071f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef9bcdf4a73cb126885478c994821b7fe2b87d9221b767b4c9342b89b0d6550a\",\"dweb:/ipfs/QmXzZXPMxjSiFpcEnhg6CjLFNxGCpDZt22xpUh7VHxNTGd\"]},\"project:/contracts/interfaces/IWitOracleRadonRequestModal.sol\":{\"keccak256\":\"0x60b777e63700ed42d7e4b88c8e12db4b5220adb10d2ecc618c8c2a99a09eccee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b70b584cba3caa113e95aef31dbf5d5ae78042907c159e3ca25e3420d3b5b3f\",\"dweb:/ipfs/QmRThmU5vd8aVX2iK33pfmp6SKgfqgnC9VpT6Ruk1EwyVB\"]},\"project:/contracts/libs/Bech32.sol\":{\"keccak256\":\"0x14618323a0efe7586c20906a2e9cee7ad63baa976ff231c57f7f2d7d3707fb8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a19f05fe84047a7a6d3d6fc39972b432e6e536aa70472386a9d7a6d9aab64a64\",\"dweb:/ipfs/QmcHwUY66yjiotRH4Q3kbRvSzcHyLQ1yHL3KbtQKiMhtZE\"]},\"project:/contracts/libs/Secp256k1.sol\":{\"keccak256\":\"0xbe686002da5004ff39dd70709f3820eba2afe9323ae9cb894009c161e4b1a666\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18fab91775216de0707cea9ad285b10be09127461a13432fea358bf9cb2a0c2e\",\"dweb:/ipfs/QmeRUGsgstnM4hxM9hpkBf3L6cE5btirEaowcMxmuw3utj\"]},\"project:/contracts/libs/Witnet.sol\":{\"keccak256\":\"0x1d446c3e534e40e676d1763bfb2897fadfac8afed904ab757843d7d6770b0a6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://338fb1073f17d64e8d31bfe492d9475ce906788ee08e6489ce30413f91dc1328\",\"dweb:/ipfs/QmPe5QX2AGTnQFjse1Xttq4ZYWwYAiXoySb5VUui3PqPhk\"]},\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0x8e07aebe2954ab3e6f2d8eceedb12db7cf915c1f3e8630f4fa9999cecb1c78ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6c54cc901183d61546e8fd15bd5ea8ef238ebc915642946071d435dd7481ea\",\"dweb:/ipfs/Qmcaqta7YjUSBbBUGqoh44bsCS6UqqoyHjBuz4qnKBShXM\"]},\"project:/contracts/libs/WitnetCBOR.sol\":{\"keccak256\":\"0xd99308373575cc10fb7f2ceb0f6a8625f3911275c1fa27811fae498d98d03d97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4909a999d7b660a2dc54ca957b6eccfa523e2765fc4d6a2574dee7d5cd67b43\",\"dweb:/ipfs/QmWGQT4KDcfSFe1hcHVoWx6E4PhYMaod5iLpJCWBEeShzh\"]},\"project:/contracts/patterns/Clonable.sol\":{\"keccak256\":\"0x9a2dbc814306f60263fe736b88aeabc44fc241d3bed132e8dd76a3684dd825f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e665de5be06c9227c49f9466d24f798d4bed1a2db66d4d1368dcd9fc663c1b3a\",\"dweb:/ipfs/QmRjY2CHTGp1eyi9XPeTKr4WnPCzXbtk2285kdy2bJVCYA\"]},\"project:/contracts/patterns/Initializable.sol\":{\"keccak256\":\"0xaac470e87f361cf15d68d1618d6eb7d4913885d33ccc39c797841a9591d44296\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef3760b2039feda8715d4bd9f8de8e3885f25573d12ba92f52d626ba880a08bf\",\"dweb:/ipfs/QmP2mfHPBKkjTAKft95sPDb4PBsjfmAwc47Kdcv3xYSf3g\"]}},\"version\":1}", "bytecode": "0x61010060405230608052348015610014575f5ffd5b506040516121c13803806121c1833981016040819052610033916102a9565b806100916001600160a01b0382161580159061005857505f826001600160a01b03163b115b60408051808201909152601581527f696e6578697374656e74205769742f4f7261636c65000000000000000000000060208201526101d1565b6001600160a01b03811660a081905260408051637b10399960e01b81529051637b103999916004808201926020929091908290030181865afa1580156100d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fd91906102a9565b6001600160a01b031660c08190526040805180820182526002815281515f8082526020828101909452637f412e23938301919061015c565b604080518082019091525f8152606060208201528152602001906001900390816101355790505b508152506040518263ffffffff1660e01b815260040161017c919061030d565b6020604051808303815f875af1158015610198573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101bc91906103bf565b6001600160801b03191660e052506104289050565b816101df576101df816101e3565b5050565b6101eb61022c565b816040516020016101fd9291906103ed565b60408051601f198184030181529082905262461bcd60e51b825261022391600401610416565b60405180910390fd5b60606102385f54151590565b61025a5760405180606001604052602981528060200161219860299139905090565b5060408051808201909152601b81527f495769744f7261636c655261646f6e526571756573744d6f64616c0000000000602082015290565b6001600160a01b03811681146102a6575f5ffd5b50565b5f602082840312156102b9575f5ffd5b81516102c481610292565b9392505050565b634e487b7160e01b5f52602160045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f606082018351600c8110610328576103286102cb565b80602085015250602084015160408085015281815180845260808601915060808160051b87010193506020830192505f5b818110156103b357868503607f1901835283518051600a811061037e5761037e6102cb565b80875250602081015190506040602087015261039d60408701826102df565b9550506020938401939290920191600101610359565b50929695505050505050565b5f602082840312156103cf575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6103f882856103d6565b6101d160f51b815261040d60028201856103d6565b95945050505050565b602081525f6102c460208301846102df565b60805160a05160c05160e051611cdb6104bd5f395f81816103b30152610cfa01525f81816102d6015281816103da015281816104cb0152818161056c015281816106c9015281816107c40152818161087501528181610bac0152610cc301525f61011701525f8181610183015281816108f10152818161097301528181610f3401528181610fdf015261108d0152611cdb5ff3fe608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c80637bb725d311610093578063adb7c3f711610063578063adb7c3f714610211578063bff852fa14610232578063ebb9155614610247578063f0e271bc1461025a575f5ffd5b80637bb725d3146101cc5780637f2b1d77146101e1578063a04daef0146101f6578063a646ccc1146101fe575f5ffd5b8063158ef93e116100ce578063158ef93e1461015957806319c7ecfc1461016e5780635001f3b5146101815780636dbca663146101a7575f5ffd5b80630f0adf5b146100f45780631014d3751461011257806313152e8914610151575b5f5ffd5b6100fc61027b565b6040516101099190611185565b60405180910390f35b6101397f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610109565b6100fc610363565b5f5415155b6040519015158152602001610109565b61013961017c366004611237565b610411565b7f0000000000000000000000000000000000000000000000000000000000000000610139565b6101ba6101b5366004611271565b61065e565b60405160ff9091168152602001610109565b6101d4610748565b604051610109919061138a565b6101e9610837565b604051610109919061143b565b61015e6108e6565b61013961020c366004611237565b610916565b610219610a34565b6040516001600160e01b03199091168152602001610109565b61023a610a53565b6040516101099190611449565b610139610255366004611237565b610ab9565b61026d6102683660046114a2565b610b6b565b604051908152602001610109565b604080518082019091525f8152606060208201526102976108e6565b6102bc5760405162461bcd60e51b81526004016102b39061150c565b60405180910390fd5b600154604051630d9e7e1960e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633679f8649161031d9160801b906004016001600160801b031991909116815260200190565b5f60405180830381865afa158015610337573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261035e9190810190611664565b905090565b604080518082019091525f81526060602082015261037f6108e6565b61039b5760405162461bcd60e51b81526004016102b39061150c565b604051630d9e7e1960e21b81526001600160801b03197f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633679f8649060240161031d565b5f5f61041b610d71565b805490915060ff600160401b82041615906001600160401b03165f811580156104415750825b90505f826001600160401b0316600114801561045c5750303b155b90508115801561046a575080155b156104885760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156104b257845460ff60401b1916600160401b1785555b60405163b4ab01a560e01b8152600481018990526001907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b4ab01a590602401602060405180830381865afa158015610518573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061053c91906117cd565b60ff16101561054d5761054d6117e6565b604051631114f43760e11b81526001600160881b0319881660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632229e86e90602401602060405180830381865afa1580156105b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105dd91906117fa565b505f889055600180546001600160801b031916608089901c6fffffffffffffffffffffffffffffff0016179055309550831561065357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505092915050565b5f6106676108e6565b6106835760405162461bcd60e51b81526004016102b39061150c565b61073f6106b0848460405160200161069c929190611848565b604051602081830303815290604052610d99565b5f5460405163b4ab01a560e01b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b4ab01a590602401602060405180830381865afa158015610716573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073a91906117cd565b610f0a565b90505b92915050565b6107876040805160e081019091525f808252602082019081526020015f8152602001606081526020016060815260200160608152602001606081525090565b61078f6108e6565b6107ab5760405162461bcd60e51b81526004016102b39061150c565b5f54604051639dd4875760e01b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639dd48757906024015f60405180830381865afa158015610810573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261035e9190810190611964565b5f6108406108e6565b61085c5760405162461bcd60e51b81526004016102b39061150c565b5f54604051635072a99b60e11b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a0e5533690602401602060405180830381865afa1580156108c2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035e9190611a7f565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141590565b5f61091f6108e6565b1561093c5760405162461bcd60e51b81526004016102b390611a98565b6001600160f81b0319306109508585610f26565b60408051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b60208201527f000000000000000000000000000000000000000000000000000000000000000060601b6001600160601b03191660348201526e5af43d82803e903d91602b57fd5bf360881b60488201528151808203603701815260579091019091528051602091820120604051610a1595949392016001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051601f1981840301815291905280516020909101209392505050565b5f8054610a475750634dffd99760e01b90565b50632572737760e21b90565b6060610a5f5f54151590565b610a8157604051806060016040526029815280602001611c7d60299139905090565b5060408051808201909152601b81527f495769744f7261636c655261646f6e526571756573744d6f64616c0000000000602082015290565b5f610ac26108e6565b15610adf5760405162461bcd60e51b81526004016102b390611a98565b610af1610aec8484610f26565b610f96565b604051630671fb3f60e21b8152600481018590526001600160881b0319841660248201526001600160a01b0391909116906319c7ecfc906044016020604051808303815f875af1158015610b47573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073f9190611acf565b5f610b746108e6565b610b905760405162461bcd60e51b81526004016102b39061150c565b5f805460405163b4ab01a560e01b8152600481018290529091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b4ab01a590602401602060405180830381865afa158015610bf9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1d91906117cd565b90505f5b84811015610ca857610ca087610c6e610c68898986818110610c4557610c45611af5565b9050602002810190610c579190611b09565b60405160200161069c929190611848565b85610f0a565b60ff16146040518060400160405280601081526020016f6d69736d61746368696e67206172677360801b8152506110f1565b600101610c21565b50600154604051632632c13d60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916398cb04f491610d269186918c918c918c918c917f00000000000000000000000000000000000000000000000000000000000000009160801b90600401611bd3565b6020604051808303815f875af1158015610d42573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d669190611c2e565b979650505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610742565b5f600382511015610dab57505f919050565b81515f90600119015b80821015610f0357601760fa1b6001600160f81b031916848381518110610ddd57610ddd611af5565b01602001516001600160f81b031916148015610e295750601760fa1b6001600160f81b031916848360020181518110610e1857610e18611af5565b01602001516001600160f81b031916145b8015610e665750600360fc1b6001600160f81b031916848360010181518110610e5457610e54611af5565b01602001516001600160f81b03191610155b8015610ea35750603960f81b6001600160f81b031916848360010181518110610e9157610e91611af5565b01602001516001600160f81b03191611155b15610ef8575f600360fc1b60f81c858460010181518110610ec657610ec6611af5565b602001015160f81c60f81b60f81c0360010190508360ff168160ff161115610eec578093505b60038301925050610db4565b600190910190610db4565b5050919050565b5f8160ff168360ff161015610f1f578161073f565b5090919050565b6040516001600160601b03197f000000000000000000000000000000000000000000000000000000000000000060601b166020820152603481018390526001600160881b0319821660548201525f9060630160405160208183030381529060405280519060200120905092915050565b5f610f9f6108e6565b15610fbc5760405162461bcd60e51b81526004016102b390611a98565b5f611021604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81527f000000000000000000000000000000000000000000000000000000000000000060601b60148201526e5af43d82803e903d91602b57fd5bf360881b602882015290565b9050826037825ff591506001600160a01b0382166110815760405162461bcd60e51b815260206004820152601860248201527f436c6f6e61626c653a2043524541544532206661696c6564000000000000000060448201526064016102b3565b6001600160a01b0382167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316336001600160a01b03167ff376596be5039d6b2fb36fead4c8a370eae426e790a869be8db074ab608cc24860405160405180910390a450919050565b816110ff576110ff81611103565b5050565b61110b610a53565b8160405160200161111d929190611c5c565b60408051601f198184030181529082905262461bcd60e51b82526102b391600401611449565b634e487b7160e01b5f52602160045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f606082018351600c81106111a0576111a0611143565b80602085015250602084015160408085015281815180845260808601915060808160051b87010193506020830192505f5b8181101561122b57868503607f1901835283518051600a81106111f6576111f6611143565b8087525060208101519050604060208701526112156040870182611157565b95505060209384019392909201916001016111d1565b50929695505050505050565b5f5f60408385031215611248575f5ffd5b8235915060208301356001600160881b031981168114611266575f5ffd5b809150509250929050565b5f5f60208385031215611282575f5ffd5b82356001600160401b03811115611297575f5ffd5b8301601f810185136112a7575f5ffd5b80356001600160401b038111156112bc575f5ffd5b8560208284010111156112cd575f5ffd5b6020919091019590945092505050565b600581106112ed576112ed611143565b9052565b601481106112ed576112ed611143565b5f82825180855260208501945060208160051b830101602085015f5b8381101561137e57848303601f19018852815183604081015f5b6002811015611365578682038352611350828551611157565b60209485019493909301929150600101611337565b5060209a8b019a9095509390930192505060010161131d565b50909695505050505050565b6020815260ff82511660208201525f60208301516113ab60408401826112dd565b5060408301516113be60608401826112f1565b50606083015160e060808401526113d9610100840182611157565b90506080840151601f198483030160a08501526113f68282611157565b91505060a0840151601f198483030160c08501526114148282611301565b91505060c0840151601f198483030160e08501526114328282611157565b95945050505050565b6020810161074282846112f1565b602081525f61073f6020830184611157565b5f5f83601f84011261146b575f5ffd5b5081356001600160401b03811115611481575f5ffd5b6020830191508360208260051b850101111561149b575f5ffd5b9250929050565b5f5f5f5f604085870312156114b5575f5ffd5b84356001600160401b038111156114ca575f5ffd5b6114d68782880161145b565b90955093505060208501356001600160401b038111156114f4575f5ffd5b6115008782880161145b565b95989497509550505050565b60208082526018908201527f436c6f6e61626c653a206f6e6c79206f6e20636c6f6e65730000000000000000604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561157957611579611543565b60405290565b60405160e081016001600160401b038111828210171561157957611579611543565b604051601f8201601f191681016001600160401b03811182821017156115c9576115c9611543565b604052919050565b5f6001600160401b038211156115e9576115e9611543565b5060051b60200190565b5f82601f830112611602575f5ffd5b8151602083015f5f6001600160401b0384111561162157611621611543565b50601f8301601f1916602001611636816115a1565b91505082815285838301111561164a575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f60208284031215611674575f5ffd5b81516001600160401b03811115611689575f5ffd5b82016040818503121561169a575f5ffd5b6116a2611557565b8151600c81106116b0575f5ffd5b815260208201516001600160401b038111156116ca575f5ffd5b80830192505084601f8301126116de575f5ffd5b81516116f16116ec826115d1565b6115a1565b8082825260208201915060208360051b860101925087831115611712575f5ffd5b602085015b838110156117a75780516001600160401b03811115611734575f5ffd5b86016040818b03601f19011215611749575f5ffd5b611751611557565b6020820151600a8110611762575f5ffd5b815260408201516001600160401b0381111561177c575f5ffd5b61178b8c6020838601016115f3565b6020830152508085525050602083019250602081019050611717565b506020840152509095945050505050565b805160ff811681146117c8575f5ffd5b919050565b5f602082840312156117dd575f5ffd5b61073f826117b8565b634e487b7160e01b5f52600160045260245ffd5b5f6020828403121561180a575f5ffd5b81518015158114611819575f5ffd5b9392505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f61185b602083018486611820565b949350505050565b8051600581106117c8575f5ffd5b8051601481106117c8575f5ffd5b5f82601f83011261188e575f5ffd5b815161189c6116ec826115d1565b8082825260208201915060208360051b8601019250858311156118bd575f5ffd5b602085015b8381101561195a5780516001600160401b038111156118df575f5ffd5b8601603f810188136118ef575f5ffd5b6118f7611557565b80606083018a811115611908575f5ffd5b602084015b818110156119485780516001600160401b0381111561192a575f5ffd5b6119398d6020838901016115f3565b8552506020938401930161190d565b505085525050602092830192016118c2565b5095945050505050565b5f60208284031215611974575f5ffd5b81516001600160401b03811115611989575f5ffd5b820160e0818503121561199a575f5ffd5b6119a261157f565b6119ab826117b8565b81526119b960208301611863565b60208201526119ca60408301611871565b604082015260608201516001600160401b038111156119e7575f5ffd5b6119f3868285016115f3565b60608301525060808201516001600160401b03811115611a11575f5ffd5b611a1d868285016115f3565b60808301525060a08201516001600160401b03811115611a3b575f5ffd5b611a478682850161187f565b60a08301525060c08201516001600160401b03811115611a65575f5ffd5b611a71868285016115f3565b60c083015250949350505050565b5f60208284031215611a8f575f5ffd5b61073f82611871565b60208082526017908201527f436c6f6e61626c653a206e6f74206f6e20636c6f6e6573000000000000000000604082015260600190565b5f60208284031215611adf575f5ffd5b81516001600160a01b0381168114611819575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e19843603018112611b1e575f5ffd5b8301803591506001600160401b03821115611b37575f5ffd5b60200191503681900382131561149b575f5ffd5b5f8383855260208501945060208460051b820101835f5b8681101561137e57838303601f19018852813536879003601e19018112611b87575f5ffd5b86016020810190356001600160401b03811115611ba2575f5ffd5b803603821315611bb0575f5ffd5b611bbb858284611820565b60209a8b019a90955093909301925050600101611b62565b87815260a060208201525f611bec60a08301888a611b4b565b8281036040840152611bff818789611b4b565b9150506001600160801b0319841660608301526001600160801b03198316608083015298975050505050505050565b5f60208284031215611c3e575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f611c678285611c45565b6101d160f51b81526114326002820185611c4556fe5769744f7261636c655261646f6e52657175657374466163746f72794d6f64616c7344656661756c74a2646970667358221220db0ed6e60ceea7b4d5f954e09655ab343fb0a8a97848602b8807b7e5c2cd471164736f6c634300081e00335769744f7261636c655261646f6e52657175657374466163746f72794d6f64616c7344656661756c74", "deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c80637bb725d311610093578063adb7c3f711610063578063adb7c3f714610211578063bff852fa14610232578063ebb9155614610247578063f0e271bc1461025a575f5ffd5b80637bb725d3146101cc5780637f2b1d77146101e1578063a04daef0146101f6578063a646ccc1146101fe575f5ffd5b8063158ef93e116100ce578063158ef93e1461015957806319c7ecfc1461016e5780635001f3b5146101815780636dbca663146101a7575f5ffd5b80630f0adf5b146100f45780631014d3751461011257806313152e8914610151575b5f5ffd5b6100fc61027b565b6040516101099190611185565b60405180910390f35b6101397f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610109565b6100fc610363565b5f5415155b6040519015158152602001610109565b61013961017c366004611237565b610411565b7f0000000000000000000000000000000000000000000000000000000000000000610139565b6101ba6101b5366004611271565b61065e565b60405160ff9091168152602001610109565b6101d4610748565b604051610109919061138a565b6101e9610837565b604051610109919061143b565b61015e6108e6565b61013961020c366004611237565b610916565b610219610a34565b6040516001600160e01b03199091168152602001610109565b61023a610a53565b6040516101099190611449565b610139610255366004611237565b610ab9565b61026d6102683660046114a2565b610b6b565b604051908152602001610109565b604080518082019091525f8152606060208201526102976108e6565b6102bc5760405162461bcd60e51b81526004016102b39061150c565b60405180910390fd5b600154604051630d9e7e1960e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633679f8649161031d9160801b906004016001600160801b031991909116815260200190565b5f60405180830381865afa158015610337573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261035e9190810190611664565b905090565b604080518082019091525f81526060602082015261037f6108e6565b61039b5760405162461bcd60e51b81526004016102b39061150c565b604051630d9e7e1960e21b81526001600160801b03197f00000000000000000000000000000000000000000000000000000000000000001660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633679f8649060240161031d565b5f5f61041b610d71565b805490915060ff600160401b82041615906001600160401b03165f811580156104415750825b90505f826001600160401b0316600114801561045c5750303b155b90508115801561046a575080155b156104885760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156104b257845460ff60401b1916600160401b1785555b60405163b4ab01a560e01b8152600481018990526001907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b4ab01a590602401602060405180830381865afa158015610518573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061053c91906117cd565b60ff16101561054d5761054d6117e6565b604051631114f43760e11b81526001600160881b0319881660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632229e86e90602401602060405180830381865afa1580156105b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105dd91906117fa565b505f889055600180546001600160801b031916608089901c6fffffffffffffffffffffffffffffff0016179055309550831561065357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505092915050565b5f6106676108e6565b6106835760405162461bcd60e51b81526004016102b39061150c565b61073f6106b0848460405160200161069c929190611848565b604051602081830303815290604052610d99565b5f5460405163b4ab01a560e01b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b4ab01a590602401602060405180830381865afa158015610716573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073a91906117cd565b610f0a565b90505b92915050565b6107876040805160e081019091525f808252602082019081526020015f8152602001606081526020016060815260200160608152602001606081525090565b61078f6108e6565b6107ab5760405162461bcd60e51b81526004016102b39061150c565b5f54604051639dd4875760e01b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639dd48757906024015f60405180830381865afa158015610810573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261035e9190810190611964565b5f6108406108e6565b61085c5760405162461bcd60e51b81526004016102b39061150c565b5f54604051635072a99b60e11b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a0e5533690602401602060405180830381865afa1580156108c2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035e9190611a7f565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141590565b5f61091f6108e6565b1561093c5760405162461bcd60e51b81526004016102b390611a98565b6001600160f81b0319306109508585610f26565b60408051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b60208201527f000000000000000000000000000000000000000000000000000000000000000060601b6001600160601b03191660348201526e5af43d82803e903d91602b57fd5bf360881b60488201528151808203603701815260579091019091528051602091820120604051610a1595949392016001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051601f1981840301815291905280516020909101209392505050565b5f8054610a475750634dffd99760e01b90565b50632572737760e21b90565b6060610a5f5f54151590565b610a8157604051806060016040526029815280602001611c7d60299139905090565b5060408051808201909152601b81527f495769744f7261636c655261646f6e526571756573744d6f64616c0000000000602082015290565b5f610ac26108e6565b15610adf5760405162461bcd60e51b81526004016102b390611a98565b610af1610aec8484610f26565b610f96565b604051630671fb3f60e21b8152600481018590526001600160881b0319841660248201526001600160a01b0391909116906319c7ecfc906044016020604051808303815f875af1158015610b47573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073f9190611acf565b5f610b746108e6565b610b905760405162461bcd60e51b81526004016102b39061150c565b5f805460405163b4ab01a560e01b8152600481018290529091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b4ab01a590602401602060405180830381865afa158015610bf9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1d91906117cd565b90505f5b84811015610ca857610ca087610c6e610c68898986818110610c4557610c45611af5565b9050602002810190610c579190611b09565b60405160200161069c929190611848565b85610f0a565b60ff16146040518060400160405280601081526020016f6d69736d61746368696e67206172677360801b8152506110f1565b600101610c21565b50600154604051632632c13d60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916398cb04f491610d269186918c918c918c918c917f00000000000000000000000000000000000000000000000000000000000000009160801b90600401611bd3565b6020604051808303815f875af1158015610d42573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d669190611c2e565b979650505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610742565b5f600382511015610dab57505f919050565b81515f90600119015b80821015610f0357601760fa1b6001600160f81b031916848381518110610ddd57610ddd611af5565b01602001516001600160f81b031916148015610e295750601760fa1b6001600160f81b031916848360020181518110610e1857610e18611af5565b01602001516001600160f81b031916145b8015610e665750600360fc1b6001600160f81b031916848360010181518110610e5457610e54611af5565b01602001516001600160f81b03191610155b8015610ea35750603960f81b6001600160f81b031916848360010181518110610e9157610e91611af5565b01602001516001600160f81b03191611155b15610ef8575f600360fc1b60f81c858460010181518110610ec657610ec6611af5565b602001015160f81c60f81b60f81c0360010190508360ff168160ff161115610eec578093505b60038301925050610db4565b600190910190610db4565b5050919050565b5f8160ff168360ff161015610f1f578161073f565b5090919050565b6040516001600160601b03197f000000000000000000000000000000000000000000000000000000000000000060601b166020820152603481018390526001600160881b0319821660548201525f9060630160405160208183030381529060405280519060200120905092915050565b5f610f9f6108e6565b15610fbc5760405162461bcd60e51b81526004016102b390611a98565b5f611021604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81527f000000000000000000000000000000000000000000000000000000000000000060601b60148201526e5af43d82803e903d91602b57fd5bf360881b602882015290565b9050826037825ff591506001600160a01b0382166110815760405162461bcd60e51b815260206004820152601860248201527f436c6f6e61626c653a2043524541544532206661696c6564000000000000000060448201526064016102b3565b6001600160a01b0382167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316336001600160a01b03167ff376596be5039d6b2fb36fead4c8a370eae426e790a869be8db074ab608cc24860405160405180910390a450919050565b816110ff576110ff81611103565b5050565b61110b610a53565b8160405160200161111d929190611c5c565b60408051601f198184030181529082905262461bcd60e51b82526102b391600401611449565b634e487b7160e01b5f52602160045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f606082018351600c81106111a0576111a0611143565b80602085015250602084015160408085015281815180845260808601915060808160051b87010193506020830192505f5b8181101561122b57868503607f1901835283518051600a81106111f6576111f6611143565b8087525060208101519050604060208701526112156040870182611157565b95505060209384019392909201916001016111d1565b50929695505050505050565b5f5f60408385031215611248575f5ffd5b8235915060208301356001600160881b031981168114611266575f5ffd5b809150509250929050565b5f5f60208385031215611282575f5ffd5b82356001600160401b03811115611297575f5ffd5b8301601f810185136112a7575f5ffd5b80356001600160401b038111156112bc575f5ffd5b8560208284010111156112cd575f5ffd5b6020919091019590945092505050565b600581106112ed576112ed611143565b9052565b601481106112ed576112ed611143565b5f82825180855260208501945060208160051b830101602085015f5b8381101561137e57848303601f19018852815183604081015f5b6002811015611365578682038352611350828551611157565b60209485019493909301929150600101611337565b5060209a8b019a9095509390930192505060010161131d565b50909695505050505050565b6020815260ff82511660208201525f60208301516113ab60408401826112dd565b5060408301516113be60608401826112f1565b50606083015160e060808401526113d9610100840182611157565b90506080840151601f198483030160a08501526113f68282611157565b91505060a0840151601f198483030160c08501526114148282611301565b91505060c0840151601f198483030160e08501526114328282611157565b95945050505050565b6020810161074282846112f1565b602081525f61073f6020830184611157565b5f5f83601f84011261146b575f5ffd5b5081356001600160401b03811115611481575f5ffd5b6020830191508360208260051b850101111561149b575f5ffd5b9250929050565b5f5f5f5f604085870312156114b5575f5ffd5b84356001600160401b038111156114ca575f5ffd5b6114d68782880161145b565b90955093505060208501356001600160401b038111156114f4575f5ffd5b6115008782880161145b565b95989497509550505050565b60208082526018908201527f436c6f6e61626c653a206f6e6c79206f6e20636c6f6e65730000000000000000604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561157957611579611543565b60405290565b60405160e081016001600160401b038111828210171561157957611579611543565b604051601f8201601f191681016001600160401b03811182821017156115c9576115c9611543565b604052919050565b5f6001600160401b038211156115e9576115e9611543565b5060051b60200190565b5f82601f830112611602575f5ffd5b8151602083015f5f6001600160401b0384111561162157611621611543565b50601f8301601f1916602001611636816115a1565b91505082815285838301111561164a575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f60208284031215611674575f5ffd5b81516001600160401b03811115611689575f5ffd5b82016040818503121561169