[ { "inputs": [ { "internalType": "string", "name": "uri_", "type": "string" }, { "internalType": "address", "name": "ccipRouterAddress", "type": "address" }, { "internalType": "address", "name": "linkTokenAddress", "type": "address" }, { "internalType": "uint64", "name": "currentChainSelector", "type": "uint64" }, { "internalType": "address", "name": "functionsRouterAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "uint64", "name": "chainSelector", "type": "uint64" } ], "name": "ChainNotEnabled", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "msgSender", "type": "address" } ], "name": "ERC1155Core_CallerIsNotIssuerOrItself", "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": [], "name": "EmptyArgs", "type": "error" }, { "inputs": [], "name": "EmptySource", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "FailedToWithdrawEth", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "router", "type": "address" } ], "name": "InvalidRouter", "type": "error" }, { "inputs": [], "name": "NoInlineSecrets", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "currentBalance", "type": "uint256" }, { "internalType": "uint256", "name": "calculatedFees", "type": "uint256" } ], "name": "NotEnoughBalanceForFees", "type": "error" }, { "inputs": [], "name": "NothingToWithdraw", "type": "error" }, { "inputs": [], "name": "OnlyAutomationForwarderOrOwnerCanCall", "type": "error" }, { "inputs": [], "name": "OnlyRouterCanFulfill", "type": "error" }, { "inputs": [ { "internalType": "uint64", "name": "chainSelector", "type": "uint64" } ], "name": "OperationNotAllowedOnCurrentChain", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "SenderNotEnabled", "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": false, "internalType": "uint64", "name": "chainSelector", "type": "uint64" } ], "name": "ChainDisabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "chainSelector", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "xNftAddress", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "ccipExtraArgs", "type": "bytes" } ], "name": "ChainEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "sourceChainSelector", "type": "uint64" }, { "indexed": false, "internalType": "uint64", "name": "destinationChainSelector", "type": "uint64" } ], "name": "CrossChainReceived", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "sourceChainSelector", "type": "uint64" }, { "indexed": false, "internalType": "uint64", "name": "destinationChainSelector", "type": "uint64" } ], "name": "CrossChainSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "OwnershipTransferRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "id", "type": "bytes32" } ], "name": "RequestFulfilled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "id", "type": "bytes32" } ], "name": "RequestSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "issuer", "type": "address" } ], "name": "SetIssuer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "messageId", "type": "bytes32" }, { "internalType": "uint64", "name": "sourceChainSelector", "type": "uint64" }, { "internalType": "bytes", "name": "sender", "type": "bytes" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct Client.EVMTokenAmount[]", "name": "destTokenAmounts", "type": "tuple[]" } ], "internalType": "struct Client.Any2EVMMessage", "name": "message", "type": "tuple" } ], "name": "ccipReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "uint64", "name": "destinationChainSelector", "type": "uint64" }, { "internalType": "enum CrossChainBurnAndMintERC1155.PayFeesIn", "name": "payFeesIn", "type": "uint8" } ], "name": "crossChainTransferFrom", "outputs": [ { "internalType": "bytes32", "name": "messageId", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "chainSelector", "type": "uint64" } ], "name": "disableChain", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "chainSelector", "type": "uint64" }, { "internalType": "address", "name": "xNftAddress", "type": "address" }, { "internalType": "bytes", "name": "ccipExtraArgs", "type": "bytes" } ], "name": "enableChain", "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": [], "name": "getNftMetadata", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getPriceDetails", "outputs": [ { "components": [ { "internalType": "uint80", "name": "listPrice", "type": "uint80" }, { "internalType": "uint80", "name": "originalListPrice", "type": "uint80" }, { "internalType": "uint80", "name": "taxAssessedValue", "type": "uint80" } ], "internalType": "struct RealEstatePriceDetails.PriceDetails", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPrices", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "requestId", "type": "bytes32" }, { "internalType": "bytes", "name": "response", "type": "bytes" }, { "internalType": "bytes", "name": "err", "type": "bytes" } ], "name": "handleOracleFulfillment", "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": "_to", "type": "address" }, { "internalType": "uint256", "name": "_id", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" }, { "internalType": "string", "name": "_tokenUri", "type": "string" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "_data", "type": "bytes" }, { "internalType": "string[]", "name": "_tokenUris", "type": "string[]" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "destChainSelector", "type": "uint64" } ], "name": "s_chains", "outputs": [ { "internalType": "address", "name": "xNftAddress", "type": "address" }, { "internalType": "bytes", "name": "ccipExtraArgsBytes", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "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": "automationForwarderAddress", "type": "address" } ], "name": "setAutomationForwarder", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_issuer", "type": "address" } ], "name": "setIssuer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "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": "to", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "tokenId", "type": "string" }, { "internalType": "uint64", "name": "subscriptionId", "type": "uint64" }, { "internalType": "uint32", "name": "gasLimit", "type": "uint32" }, { "internalType": "bytes32", "name": "donID", "type": "bytes32" } ], "name": "updatePriceDetails", "outputs": [ { "internalType": "bytes32", "name": "requestId", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_beneficiary", "type": "address" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_beneficiary", "type": "address" }, { "internalType": "address", "name": "_token", "type": "address" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
61056060405261043b610100818152906200462561012039600590620000269082620002cc565b50604051806102e001604052806102b1815260200162004a606102b19139600690620000539082620002cc565b503480156200006157600080fd5b5060405162004d1138038062004d118339810160408190526200008491620003cd565b8085858585833380600088846200009b8162000167565b506001600160a01b039081166080528216620000fe5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600780546001600160a01b0319166001600160a01b03848116919091179091558116156200013157620001318162000179565b50506001600b5550506001600160a01b0392831660a052911660c0526001600160401b031660e05250620004ed95505050505050565b6002620001758282620002cc565b5050565b336001600160a01b03821603620001d35760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401620000f5565b600880546001600160a01b0319166001600160a01b03838116918217909255600754604051919216907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127890600090a350565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200025057607f821691505b6020821081036200027157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002c7576000816000526020600020601f850160051c81016020861015620002a25750805b601f850160051c820191505b81811015620002c357828155600101620002ae565b5050505b505050565b81516001600160401b03811115620002e857620002e862000225565b6200030081620002f984546200023b565b8462000277565b602080601f8311600181146200033857600084156200031f5750858301515b600019600386901b1c1916600185901b178555620002c3565b600085815260208120601f198616915b82811015620003695788860151825594840194600190910190840162000348565b5085821015620003885787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80516001600160a01b0381168114620003b057600080fd5b919050565b80516001600160401b0381168114620003b057600080fd5b600080600080600060a08688031215620003e657600080fd5b85516001600160401b0380821115620003fe57600080fd5b818801915088601f8301126200041357600080fd5b81518181111562000428576200042862000225565b604051601f8201601f19908116603f0116810190838211818310171562000453576200045362000225565b81604052828152602093508b848487010111156200047057600080fd5b600091505b8282101562000494578482018401518183018501529083019062000475565b6000848483010152809950505050620004af81890162000398565b95505050620004c16040870162000398565b9250620004d160608701620003b5565b9150620004e16080870162000398565b90509295509295909350565b60805160a05160c05160e0516140b1620005746000396000818161060501528181610e1c01528181610f9101526115cb01526000818161091d01528181610ac201528181610b510152610c2e015260008181610a0501528181610bff01528181610cb301528181610d750152611439015260008181610581015261212d01526140b16000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c806379ba50971161010f578063c1341c4f116100a2578063f0ed2e8011610071578063f0ed2e801461044d578063f242432a146104f0578063f2fde38b14610503578063f5298aca1461051657600080fd5b8063c1341c4f1461040c578063d40d17bc1461041f578063e6b46ff514610432578063e985e9c51461043a57600080fd5b8063a843a0ab116100de578063a843a0ab146103be578063b942f8cb146103d1578063bd85b039146103e4578063bd9a548b1461040457600080fd5b806379ba50971461037557806385572ffb1461037d5780638da5cb5b14610390578063a22cb465146103ab57600080fd5b80633aeac4e11161018757806351cff8d91161015657806351cff8d91461031b57806355cc4e571461032e5780635dc5ebdb146103415780636b20c4541461036257600080fd5b80633aeac4e1146102b357806341eade46146102c65780634e1273f4146102d95780634f558e79146102f957600080fd5b80630e89341c116101c35780630e89341c1461026557806318160ddd14610285578063240b3b491461028d5780632eb2c2d6146102a057600080fd5b8062fdd58e146101f457806301ffc9a71461021a5780630ca761751461023d5780630ce639c414610252575b600080fd5b610207610202366004612f7d565b610529565b6040519081526020015b60405180910390f35b61022d610228366004612fbf565b610551565b6040519015158152602001610211565b61025061024b36600461309f565b610576565b005b610250610260366004613127565b6105fa565b61027861027336600461317c565b610709565b60405161021191906131e5565b600454610207565b61020761029b3660046131f8565b6107c7565b6102506102ae366004613323565b610e70565b6102506102c13660046133d0565b610ed7565b6102506102d4366004613409565b610f86565b6102ec6102e7366004613424565b611062565b6040516102119190613521565b61022d61030736600461317c565b600090815260036020526040902054151590565b610250610329366004613534565b61112e565b61025061033c366004613534565b6111e5565b61035461034f366004613409565b611237565b604051610211929190613551565b61025061037036600461357d565b6112e6565b610250611380565b61025061038b3660046135e8565b61142e565b6007546040516001600160a01b039091168152602001610211565b6102506103b9366004613630565b61161c565b6102076103cc36600461365e565b61162b565b6102506103df3660046136ce565b61178e565b6102076103f236600461317c565b60009081526003602052604090205490565b61027861183c565b61025061041a366004613801565b6118ca565b61025061042d366004613534565b611929565b610278611953565b61022d6104483660046133d0565b611960565b6104bb61045b36600461317c565b604080516060808201835260008083526020808401829052928401819052938452600e825292829020825193840183525469ffffffffffffffffffff8082168552600160501b8204811692850192909252600160a01b9004169082015290565b60408051825169ffffffffffffffffffff90811682526020808501518216908301529282015190921690820152606001610211565b6102506104fe36600461385a565b61198e565b610250610511366004613534565b6119ed565b6102506105243660046138c2565b6119fe565b6000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982166385572ffb60e01b148061054b575061054b82611a6f565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105bf5760405163c6829f8360e01b815260040160405180910390fd5b6105ca838383611abf565b60405183907f85e1543bf2f84fe80c6badbce3648c8539ad1df4d2b3d822938ca0538be727e690600090a2505050565b610602611b81565b827f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316816001600160401b031603610665576040516340d8e3a160e01b81526001600160401b03821660048201526024015b60405180910390fd5b6040805180820182526001600160a01b03858116825260208083018681526001600160401b0389166000908152600c909252939020825181546001600160a01b0319169216919091178155915190919060018201906106c49082613979565b509050507f59cc0b49d3359ac35e3872e99199469b6a1025c9a945cd9b6a411bffe337272d8484846040516106fb93929190613a38565b60405180910390a150505050565b6000818152600a6020526040812080546060929190610727906138f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610753906138f7565b80156107a05780601f10610775576101008083540402835291602001916107a0565b820191906000526020600020905b81548152906001019060200180831161078357829003601f168201915b5050505050905060008151116107be576107b983611bd6565b6107c0565b805b9392505050565b60006107d1611c6a565b6001600160401b0383166000908152600c602052604090205483906001600160a01b031661081d57604051630e19fdf760e11b81526001600160401b038216600482015260240161065c565b600061082888610709565b90506108358a89896119fe565b6040805160a0810182526001600160401b0387166000908152600c602052918220546001600160a01b031660c08201528060e0810160405160208183030381529060405281526020018c8c8c8c8c8860405160200161089996959493929190613a74565b60408051601f19818403018152919052815260200160006040519080825280602002602001820160405280156108f557816020015b60408051808201909152600080825260208201528152602001906001900390816108ce5790505b508152602001600187600181111561090f5761090f613acd565b1461091b57600061093d565b7f00000000000000000000000000000000000000000000000000000000000000005b6001600160a01b03168152602001600c6000896001600160401b03166001600160401b03168152602001908152602001600020600101805461097e906138f7565b80601f01602080910402602001604051908101604052809291908181526020018280546109aa906138f7565b80156109f75780601f106109cc576101008083540402835291602001916109f7565b820191906000526020600020905b8154815290600101906020018083116109da57829003601f168201915b5050505050815250905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320487ded88846040518363ffffffff1660e01b8152600401610a51929190613ae3565b602060405180830381865afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a929190613bbf565b90506001866001811115610aa857610aa8613acd565b03610d34576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b359190613bbf565b811115610be8576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc49190613bbf565b6040516328fdcaa160e01b815260048101919091526024810182905260440161065c565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9b9190613bd8565b506040516396f4e9f960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906396f4e9f990610cea908a908690600401613ae3565b6020604051808303816000875af1158015610d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2d9190613bbf565b9450610df4565b47811115610d5e576040516328fdcaa160e01b81524760048201526024810182905260440161065c565b6040516396f4e9f960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906396f4e9f9908390610dae908b908790600401613ae3565b60206040518083038185885af1158015610dcc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610df19190613bbf565b94505b7f300e6c20d2e9d8db9b2df40ebce943d9dae3fa3a8eaec841a3d1cb9a1e8b6ad78c8c8c8c8c7f00000000000000000000000000000000000000000000000000000000000000008d604051610e4f9796959493929190613bf5565b60405180910390a150505050610e656001600b55565b979650505050505050565b336001600160a01b0386168114801590610e915750610e8f8682611960565b155b15610ec25760405163711bec9160e11b81526001600160a01b0380831660048301528716602482015260440161065c565b610ecf8686868686611c94565b505050505050565b610edf611b81565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a9190613bbf565b905080600003610f6d57604051630686827b60e51b815260040160405180910390fd5b610f816001600160a01b0383168483611cfb565b505050565b610f8e611b81565b807f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316816001600160401b031603610fec576040516340d8e3a160e01b81526001600160401b038216600482015260240161065c565b6001600160401b0382166000908152600c6020526040812080546001600160a01b0319168155906110206001830182612ee0565b50506040516001600160401b03831681527f67e02000179a6045f4db8fb1b09f01e170b0347e0b698fc5112ce4d798ef19f69060200160405180910390a15050565b606081518351146110935781518351604051635b05999160e01b81526004810192909252602482015260440161065c565b600083516001600160401b038111156110ae576110ae612fdc565b6040519080825280602002602001820160405280156110d7578160200160208202803683370190505b50905060005b84518110156111265760208082028601015161110190602080840287010151610529565b82828151811061111357611113613c53565b60209081029190910101526001016110dd565b509392505050565b611136611b81565b47600081900361115957604051630686827b60e51b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146111a6576040519150601f19603f3d011682016040523d82523d6000602084013e6111ab565b606091505b5050905080610f8157604051639d11f56360e01b81523360048201526001600160a01b03841660248201526044810183905260640161065c565b6111ed611b81565b600980546001600160a01b0319166001600160a01b0383169081179091556040517fd56ed7b1c1110348b1fbf418469f6fc4acc32d9b675e9e1e448cc19169a64ca090600090a250565b600c60205260009081526040902080546001820180546001600160a01b039092169291611263906138f7565b80601f016020809104026020016040519081016040528092919081815260200182805461128f906138f7565b80156112dc5780601f106112b1576101008083540402835291602001916112dc565b820191906000526020600020905b8154815290600101906020018083116112bf57829003601f168201915b5050505050905082565b33301480159061130157506009546001600160a01b03163314155b1561132157604051637725137960e11b815233600482015260240161065c565b6001600160a01b0383163314801590611341575061133f8333611960565b155b1561137557335b60405163711bec9160e11b81526001600160a01b039182166004820152908416602482015260440161065c565b610f81838383611d4d565b6008546001600160a01b031633146113d35760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b604482015260640161065c565b600780546001600160a01b0319808216339081179093556008805490911690556040516001600160a01b03909116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611479576040516335fdcccd60e21b815233600482015260240161065c565b611481611c6a565b6114916040820160208301613409565b6001600160401b0381166000908152600c60205260409020546001600160a01b03166114db57604051630e19fdf760e11b81526001600160401b038216600482015260240161065c565b6114eb6040830160208401613409565b6114f86040840184613c69565b8101906115059190613534565b6001600160401b0382166000908152600c60205260409020546001600160a01b038281169116146115545760405163baf46cd160e01b81526001600160a01b038216600482015260240161065c565b60006115666040860160208701613409565b90506000808080808061157c60608c018c613c69565b8101906115899190613cb6565b9550955095509550955095506115a285858585856118ca565b7f8a69e2b5fbcc69a1f5d6326fb26db5bc43cd18d09d2e79a48a50b77da16432f986868686868c7f00000000000000000000000000000000000000000000000000000000000000006040516115fd9796959493929190613bf5565b60405180910390a1505050505050505050506116196001600b55565b50565b611627338383611d93565b5050565b600d546000906001600160a01b0316331480159061165457506007546001600160a01b03163314155b15611672576040516302dc7d2f60e21b815260040160405180910390fd5b6116b36040805160e0810190915280600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b611723306001600160a01b031663bd9a548b6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156116f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261171c9190810190613d50565b8290611e29565b604080516001808252818301909252600091816020015b606081526020019060019003908161173a579050509050868160008151811061176557611765613c53565b602090810291909101015261177a8282611e36565b610e6561178683611e60565b878787612128565b3330148015906117a957506009546001600160a01b03163314155b156117c957604051637725137960e11b815233600482015260240161065c565b6117d5858585856121fa565b60005b8451811015610ecf578181815181106117f3576117f3613c53565b6020026020010151600a600087848151811061181157611811613c53565b6020026020010151815260200190815260200160002090816118339190613979565b506001016117d8565b60068054611849906138f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611875906138f7565b80156118c25780601f10611897576101008083540402835291602001916118c2565b820191906000526020600020905b8154815290600101906020018083116118a557829003601f168201915b505050505081565b3330148015906118e557506009546001600160a01b03163314155b1561190557604051637725137960e11b815233600482015260240161065c565b61191185858585612238565b6000848152600a60205260409020610ecf8282613979565b611931611b81565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60058054611849906138f7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b336001600160a01b03861681148015906119af57506119ad8682611960565b155b156119e05760405163711bec9160e11b81526001600160a01b0380831660048301528716602482015260440161065c565b610ecf8686868686612295565b6119f5611b81565b61161981612323565b333014801590611a1957506009546001600160a01b03163314155b15611a3957604051637725137960e11b815233600482015260240161065c565b6001600160a01b0383163314801590611a595750611a578333611960565b155b15611a645733611348565b610f818383836123cd565b60006001600160e01b03198216636cdb3d1360e11b1480611aa057506001600160e01b031982166303a24d0760e21b145b8061054b57506301ffc9a760e01b6001600160e01b031983161461054b565b805115611ae0578060405162461bcd60e51b815260040161065c91906131e5565b60008060008085806020019051810190611afa9190613dbd565b6040805160608101825269ffffffffffffffffffff948516815292841660208085019182529285168483019081526000968752600e909352942091518254945191518416600160a01b0269ffffffffffffffffffff60a01b19928516600160501b026001600160a01b03199096169190941617939093179290921617905550505050505050565b6007546001600160a01b03163314611bd45760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b604482015260640161065c565b565b606060028054611be5906138f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611c11906138f7565b8015611c5e5780601f10611c3357610100808354040283529160200191611c5e565b820191906000526020600020905b815481529060010190602001808311611c4157829003601f168201915b50505050509050919050565b6002600b5403611c8d57604051633ee5aeb560e01b815260040160405180910390fd5b6002600b55565b6001600160a01b038416611cbe57604051632bfa23e760e11b81526000600482015260240161065c565b6001600160a01b038516611ce757604051626a0d4560e21b81526000600482015260240161065c565b611cf48585858585612431565b5050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610f81908490612484565b6001600160a01b038316611d7657604051626a0d4560e21b81526000600482015260240161065c565b610f81836000848460405180602001604052806000815250612431565b6001600160a01b038216611dbc5760405162ced3e160e81b81526000600482015260240161065c565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61162782600080846124f5565b8051600003611e585760405163fe936cb760e01b815260040160405180910390fd5b60a090910152565b60606000611e6f610100612573565b9050611ea86040518060400160405280600c81526020016b31b7b232a637b1b0ba34b7b760a11b8152508261259490919063ffffffff16565b8251611ec6906002811115611ebf57611ebf613acd565b82906125ad565b6040805180820190915260088152676c616e677561676560c01b6020820152611ef0908290612594565b6040830151611f07908015611ebf57611ebf613acd565b604080518082019091526006815265736f7572636560d01b6020820152611f2f908290612594565b6060830151611f3f908290612594565b60a08301515115611fcb576040805180820190915260048152636172677360e01b6020820152611f70908290612594565b611f79816125e6565b60005b8360a0015151811015611fc157611fb98460a001518281518110611fa257611fa2613c53565b60200260200101518361259490919063ffffffff16565b600101611f7c565b50611fcb8161260a565b6080830151511561208f57600083602001516002811115611fee57611fee613acd565b0361200c5760405163a80d31f760e01b815260040160405180910390fd5b60408051808201909152600f81526e39b2b1b932ba39a637b1b0ba34b7b760891b602082015261203d908290612594565b61205683602001516002811115611ebf57611ebf613acd565b6040805180820190915260078152667365637265747360c81b602082015261207f908290612594565b608083015161208f908290612628565b60c083015151156121205760408051808201909152600981526862797465734172677360b81b60208201526120c5908290612594565b6120ce816125e6565b60005b8360c00151518110156121165761210e8460c0015182815181106120f7576120f7613c53565b60200260200101518361262890919063ffffffff16565b6001016120d1565b506121208161260a565b515192915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663461d27628688600188886040518663ffffffff1660e01b8152600401612180959493929190613df3565b6020604051808303816000875af115801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c39190613bbf565b60405190915081907f1131472297a800fee664d1d89cfa8f7676ff07189ecc53f80bbb5f4969099db890600090a295945050505050565b6001600160a01b03841661222457604051632bfa23e760e11b81526000600482015260240161065c565b612232600085858585612431565b50505050565b6001600160a01b03841661226257604051632bfa23e760e11b81526000600482015260240161065c565b60408051600180825260208201869052818301908152606082018590526080820190925290610ecf600087848487612431565b6001600160a01b0384166122bf57604051632bfa23e760e11b81526000600482015260240161065c565b6001600160a01b0385166122e857604051626a0d4560e21b81526000600482015260240161065c565b6040805160018082526020820186905281830190815260608201859052608082019092529061231a8787848487612431565b50505050505050565b336001600160a01b0382160361237b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161065c565b600880546001600160a01b0319166001600160a01b03838116918217909255600754604051919216907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127890600090a350565b6001600160a01b0383166123f657604051626a0d4560e21b81526000600482015260240161065c565b604080516001808252602082018590528183019081526060820184905260a08201909252600060808201818152919291611cf4918791859085905b61243d85858585612635565b6001600160a01b03841615611cf45782513390600103612476576020848101519084015161246f838989858589612721565b5050610ecf565b610ecf818787878787612845565b600080602060008451602086016000885af1806124a7576040513d6000823e3d81fd5b50506000513d915081156124bf5780600114156124cc565b6001600160a01b0384163b155b1561223257604051635274afe760e01b81526001600160a01b038516600482015260240161065c565b8051600003612517576040516322ce3edd60e01b815260040160405180910390fd5b8383600281111561252a5761252a613acd565b9081600281111561253d5761253d613acd565b9052506040840182801561255357612553613acd565b9081801561256357612563613acd565b9052506060909301929092525050565b61257b612f1a565b8051612587908361292e565b5060006020820152919050565b6125a182600383516129a5565b8151610f819082612abe565b81516125ba9060c2612adf565b5061162782826040516020016125d291815260200190565b604051602081830303815290604052612628565b6125f1816004612b48565b6001816020018181516126049190613e52565b90525050565b612615816007612b48565b6001816020018181516126049190613e65565b6125a182600283516129a5565b61264184848484612b5f565b6001600160a01b0384166126c1576000805b83518110156126a7576020818102848101820151908601820151600090815260039092526040822080549192839261268c908490613e52565b9091555061269c90508184613e52565b925050600101612653565b5080600460008282546126ba9190613e52565b9091555050505b6001600160a01b038316612232576000805b83518110156127105760208181028481018201519086018201516000908152600390925260409091208054829003905591909101906001016126d3565b506004805491909103905550505050565b6001600160a01b0384163b15610ecf5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906127659089908990889088908890600401613e78565b6020604051808303816000875af19250505080156127a0575060408051601f3d908101601f1916820190925261279d91810190613eb2565b60015b612809573d8080156127ce576040519150601f19603f3d011682016040523d82523d6000602084013e6127d3565b606091505b50805160000361280157604051632bfa23e760e11b81526001600160a01b038616600482015260240161065c565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b1461231a57604051632bfa23e760e11b81526001600160a01b038616600482015260240161065c565b6001600160a01b0384163b15610ecf5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906128899089908990889088908890600401613ecf565b6020604051808303816000875af19250505080156128c4575060408051601f3d908101601f191682019092526128c191810190613eb2565b60015b6128f2573d8080156127ce576040519150601f19603f3d011682016040523d82523d6000602084013e6127d3565b6001600160e01b0319811663bc197c8160e01b1461231a57604051632bfa23e760e11b81526001600160a01b038616600482015260240161065c565b60408051808201909152606081526000602082015261294e602083613f2d565b156129765761295e602083613f2d565b612969906020613e65565b6129739083613e52565b91505b60208084018390526040518085526000815290818401018181101561299a57600080fd5b604052509192915050565b6017816001600160401b0316116129cb5782516122329060e0600585901b168317612adf565b60ff816001600160401b031611612a0b5782516129f3906018611fe0600586901b1617612adf565b508251612232906001600160401b0383166001612d73565b61ffff816001600160401b031611612a4c578251612a34906019611fe0600586901b1617612adf565b508251612232906001600160401b0383166002612d73565b63ffffffff816001600160401b031611612a8f578251612a7790601a611fe0600586901b1617612adf565b508251612232906001600160401b0383166004612d73565b8251612aa690601b611fe0600586901b1617612adf565b508251612232906001600160401b0383166008612d73565b6040805180820190915260608152600060208201526107c083838451612df8565b6040805180820190915260608152600060208201528251516000612b04826001613e52565b905084602001518210612b2557612b2585612b20836002613f4f565b612ec9565b8451602083820101858153508051821115612b3e578181525b5093949350505050565b8151610f8190601f611fe0600585901b1617612adf565b8051825114612b8e5781518151604051635b05999160e01b81526004810192909252602482015260440161065c565b3360005b8351811015612c94576020818102858101820151908501909101516001600160a01b03881615612c45576000828152602081815260408083206001600160a01b038c16845290915290205481811015612c1e576040516303dee4c560e01b81526001600160a01b038a16600482015260248101829052604481018390526064810184905260840161065c565b6000838152602081815260408083206001600160a01b038d16845290915290209082900390555b6001600160a01b03871615612c8a576000828152602081815260408083206001600160a01b038b16845290915281208054839290612c84908490613e52565b90915550505b5050600101612b92565b508251600103612d155760208301516000906020840151909150856001600160a01b0316876001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612d06929190918252602082015260400190565b60405180910390a45050611cf4565b836001600160a01b0316856001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051612d64929190613f66565b60405180910390a45050505050565b6040805180820190915260608152600060208201528351516000612d978285613e52565b90508560200151811115612db457612db486612b20836002613f4f565b60006001612dc48661010061406f565b612dce9190613e65565b90508651828101878319825116178152508051831115612dec578281525b50959695505050505050565b6040805180820190915260608152600060208201528251821115612e1b57600080fd5b8351516000612e2a8483613e52565b90508560200151811115612e4757612e4786612b20836002613f4f565b855180518382016020019160009180851115612e61578482525b505050602086015b60208610612ea15780518252612e80602083613e52565b9150612e8d602082613e52565b9050612e9a602087613e65565b9550612e69565b51815160001960208890036101000a0190811690199190911617905250849150509392505050565b8151612ed5838361292e565b506122328382612abe565b508054612eec906138f7565b6000825580601f10612efc575050565b601f0160209004906000526020600020908101906116199190612f4f565b6040518060400160405280612f42604051806040016040528060608152602001600081525090565b8152602001600081525090565b5b80821115612f645760008155600101612f50565b5090565b6001600160a01b038116811461161957600080fd5b60008060408385031215612f9057600080fd5b8235612f9b81612f68565b946020939093013593505050565b6001600160e01b03198116811461161957600080fd5b600060208284031215612fd157600080fd5b81356107c081612fa9565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561301a5761301a612fdc565b604052919050565b60006001600160401b0382111561303b5761303b612fdc565b50601f01601f191660200190565b600082601f83011261305a57600080fd5b813561306d61306882613022565b612ff2565b81815284602083860101111561308257600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156130b457600080fd5b8335925060208401356001600160401b03808211156130d257600080fd5b6130de87838801613049565b935060408601359150808211156130f457600080fd5b5061310186828701613049565b9150509250925092565b80356001600160401b038116811461312257600080fd5b919050565b60008060006060848603121561313c57600080fd5b6131458461310b565b9250602084013561315581612f68565b915060408401356001600160401b0381111561317057600080fd5b61310186828701613049565b60006020828403121561318e57600080fd5b5035919050565b60005b838110156131b0578181015183820152602001613198565b50506000910152565b600081518084526131d1816020860160208601613195565b601f01601f19169290920160200192915050565b6020815260006107c060208301846131b9565b600080600080600080600060e0888a03121561321357600080fd5b873561321e81612f68565b9650602088013561322e81612f68565b9550604088013594506060880135935060808801356001600160401b0381111561325757600080fd5b6132638a828b01613049565b93505061327260a0890161310b565b915060c08801356002811061328657600080fd5b8091505092959891949750929550565b60006001600160401b038211156132af576132af612fdc565b5060051b60200190565b600082601f8301126132ca57600080fd5b813560206132da61306883613296565b8083825260208201915060208460051b8701019350868411156132fc57600080fd5b602086015b848110156133185780358352918301918301613301565b509695505050505050565b600080600080600060a0868803121561333b57600080fd5b853561334681612f68565b9450602086013561335681612f68565b935060408601356001600160401b038082111561337257600080fd5b61337e89838a016132b9565b9450606088013591508082111561339457600080fd5b6133a089838a016132b9565b935060808801359150808211156133b657600080fd5b506133c388828901613049565b9150509295509295909350565b600080604083850312156133e357600080fd5b82356133ee81612f68565b915060208301356133fe81612f68565b809150509250929050565b60006020828403121561341b57600080fd5b6107c08261310b565b6000806040838503121561343757600080fd5b82356001600160401b038082111561344e57600080fd5b818501915085601f83011261346257600080fd5b8135602061347261306883613296565b82815260059290921b8401810191818101908984111561349157600080fd5b948201945b838610156134b85785356134a981612f68565b82529482019490820190613496565b965050860135925050808211156134ce57600080fd5b506134db858286016132b9565b9150509250929050565b60008151808452602080850194506020840160005b83811015613516578151875295820195908201906001016134fa565b509495945050505050565b6020815260006107c060208301846134e5565b60006020828403121561354657600080fd5b81356107c081612f68565b6001600160a01b0383168152604060208201819052600090613575908301846131b9565b949350505050565b60008060006060848603121561359257600080fd5b833561359d81612f68565b925060208401356001600160401b03808211156135b957600080fd5b6135c5878388016132b9565b935060408601359150808211156135db57600080fd5b50613101868287016132b9565b6000602082840312156135fa57600080fd5b81356001600160401b0381111561361057600080fd5b820160a081850312156107c057600080fd5b801515811461161957600080fd5b6000806040838503121561364357600080fd5b823561364e81612f68565b915060208301356133fe81613622565b6000806000806080858703121561367457600080fd5b84356001600160401b0381111561368a57600080fd5b61369687828801613049565b9450506136a56020860161310b565b9250604085013563ffffffff811681146136be57600080fd5b9396929550929360600135925050565b600080600080600060a086880312156136e657600080fd5b85356136f181612f68565b94506020868101356001600160401b038082111561370e57600080fd5b61371a8a838b016132b9565b9650604089013591508082111561373057600080fd5b61373c8a838b016132b9565b9550606089013591508082111561375257600080fd5b61375e8a838b01613049565b9450608089013591508082111561377457600080fd5b818901915089601f83011261378857600080fd5b813561379661306882613296565b81815260059190911b8301840190848101908c8311156137b557600080fd5b8585015b838110156137ed578035858111156137d15760008081fd5b6137df8f89838a0101613049565b8452509186019186016137b9565b508096505050505050509295509295909350565b600080600080600060a0868803121561381957600080fd5b853561382481612f68565b9450602086013593506040860135925060608601356001600160401b038082111561384e57600080fd5b6133a089838a01613049565b600080600080600060a0868803121561387257600080fd5b853561387d81612f68565b9450602086013561388d81612f68565b9350604086013592506060860135915060808601356001600160401b038111156138b657600080fd5b6133c388828901613049565b6000806000606084860312156138d757600080fd5b83356138e281612f68565b95602085013595506040909401359392505050565b600181811c9082168061390b57607f821691505b60208210810361392b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610f81576000816000526020600020601f850160051c8101602086101561395a5750805b601f850160051c820191505b81811015610ecf57828155600101613966565b81516001600160401b0381111561399257613992612fdc565b6139a6816139a084546138f7565b84613931565b602080601f8311600181146139db57600084156139c35750858301515b600019600386901b1c1916600185901b178555610ecf565b600085815260208120601f198616915b82811015613a0a578886015182559484019460019091019084016139eb565b5085821015613a285787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160401b03841681526001600160a01b0383166020820152606060408201819052600090613a6b908301846131b9565b95945050505050565b6001600160a01b03878116825286166020820152604081018590526060810184905260c060808201819052600090613aae908301856131b9565b82810360a0840152613ac081856131b9565b9998505050505050505050565b634e487b7160e01b600052602160045260246000fd5b600060406001600160401b03851683526020604081850152845160a06040860152613b1160e08601826131b9565b905081860151603f1980878403016060880152613b2e83836131b9565b6040890151888203830160808a01528051808352908601945060009350908501905b80841015613b8257845180516001600160a01b0316835286015186830152938501936001939093019290860190613b50565b5060608901516001600160a01b031660a08901526080890151888203830160c08a01529550613bb181876131b9565b9a9950505050505050505050565b600060208284031215613bd157600080fd5b5051919050565b600060208284031215613bea57600080fd5b81516107c081613622565b6001600160a01b03888116825287166020820152604081018690526060810185905260e060808201819052600090613c2f908301866131b9565b6001600160401b0394851660a08401529290931660c0909101529695505050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112613c8057600080fd5b8301803591506001600160401b03821115613c9a57600080fd5b602001915036819003821315613caf57600080fd5b9250929050565b60008060008060008060c08789031215613ccf57600080fd5b8635613cda81612f68565b95506020870135613cea81612f68565b9450604087013593506060870135925060808701356001600160401b0380821115613d1457600080fd5b613d208a838b01613049565b935060a0890135915080821115613d3657600080fd5b50613d4389828a01613049565b9150509295509295509295565b600060208284031215613d6257600080fd5b81516001600160401b03811115613d7857600080fd5b8201601f81018413613d8957600080fd5b8051613d9761306882613022565b818152856020838501011115613dac57600080fd5b613a6b826020830160208601613195565b60008060008060808587031215613dd357600080fd5b505082516020840151604085015160609095015191969095509092509050565b6001600160401b038616815260a060208201526000613e1560a08301876131b9565b61ffff9590951660408301525063ffffffff92909216606083015260809091015292915050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561054b5761054b613e3c565b8181038181111561054b5761054b613e3c565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090610e65908301846131b9565b600060208284031215613ec457600080fd5b81516107c081612fa9565b6001600160a01b0386811682528516602082015260a060408201819052600090613efb908301866134e5565b8281036060840152613f0d81866134e5565b90508281036080840152613f2181856131b9565b98975050505050505050565b600082613f4a57634e487b7160e01b600052601260045260246000fd5b500690565b808202811582820484141761054b5761054b613e3c565b604081526000613f7960408301856134e5565b8281036020840152613a6b81856134e5565b600181815b80851115613fc6578160001904821115613fac57613fac613e3c565b80851615613fb957918102915b93841c9390800290613f90565b509250929050565b600082613fdd5750600161054b565b81613fea5750600061054b565b8160018114614000576002811461400a57614026565b600191505061054b565b60ff84111561401b5761401b613e3c565b50506001821b61054b565b5060208310610133831016604e8410600b8410161715614049575081810a61054b565b6140538383613f8b565b806000190482111561406757614067613e3c565b029392505050565b60006107c08383613fce56fea26469706673582212208d969556e49514e0d63ec0feb03ad914e659e90556d13813cc52f86053ce51eb64736f6c63430008180033636f6e7374207b20657468657273207d203d20617761697420696d706f727428276e706d3a65746865727340362e31302e3027293b636f6e73742048617368203d20617761697420696d706f727428276e706d3a697066732d6f6e6c792d6861736840342e302e3027293b636f6e737420617069526573706f6e7365203d2061776169742046756e6374696f6e732e6d616b654874747052657175657374287b2020202075726c3a206068747470733a2f2f6170692e627269646765646174616f75747075742e636f6d2f6170692f76322f4f446174612f746573742f50726f70657274792827505f35646261316662393461613430353562396632393639366627293f6163636573735f746f6b656e3d3662616361353437373432633666393661366666373162313338343234663231602c7d293b636f6e7374207265616c45737461746541646472657373203d20617069526573706f6e73652e646174612e556e706172736564416464726573733b636f6e737420796561724275696c74203d204e756d62657228617069526573706f6e73652e646174612e596561724275696c74293b636f6e7374206c6f7453697a6553717561726546656574203d204e756d62657228617069526573706f6e73652e646174612e4c6f7453697a6553717561726546656574293b636f6e7374206c6976696e6741726561203d204e756d62657228617069526573706f6e73652e646174612e4c6976696e6741726561293b636f6e737420626564726f6f6d73546f74616c203d204e756d62657228617069526573706f6e73652e646174612e426564726f6f6d73546f74616c293b636f6e7374206d65746164617461203d207b6e616d653a20605265616c2045737461746520546f6b656e602c617474726962757465733a205b7b2074726169745f747970653a20607265616c45737461746541646472657373602c2076616c75653a207265616c45737461746541646472657373207d2c7b2074726169745f747970653a2060796561724275696c74602c2076616c75653a20796561724275696c74207d2c7b2074726169745f747970653a20606c6f7453697a6553717561726546656574602c2076616c75653a206c6f7453697a6553717561726546656574207d2c7b2074726169745f747970653a20606c6976696e6741726561602c2076616c75653a206c6976696e6741726561207d2c7b2074726169745f747970653a2060626564726f6f6d73546f74616c602c2076616c75653a20626564726f6f6d73546f74616c207d5d7d3b636f6e7374206d65746164617461537472696e67203d204a534f4e2e737472696e67696679286d65746164617461293b636f6e73742069706673436964203d20617761697420486173682e6f66286d65746164617461537472696e67293b72657475726e2046756e6374696f6e732e656e636f6465537472696e672860697066733a2f2f247b697066734369647d60293b636f6e7374207b20657468657273207d203d20617761697420696d706f727428276e706d3a65746865727340362e31302e3027293b636f6e737420616269436f646572203d206574686572732e416269436f6465722e64656661756c74416269436f64657228293b636f6e737420746f6b656e4964203d20617267735b305d3b636f6e737420617069526573706f6e7365203d2061776169742046756e6374696f6e732e6d616b654874747052657175657374287b2020202075726c3a206068747470733a2f2f6170692e627269646765646174616f75747075742e636f6d2f6170692f76322f4f446174612f746573742f50726f70657274792827505f35646261316662393461613430353562396632393639366627293f6163636573735f746f6b656e3d3662616361353437373432633666393661366666373162313338343234663231602c7d293b636f6e7374206c6973745072696365203d204e756d62657228617069526573706f6e73652e646174612e4c6973745072696365293b636f6e7374206f726967696e616c4c6973745072696365203d204e756d62657228617069526573706f6e73652e646174612e4f726967696e616c4c6973745072696365293b636f6e737420746178417373657373656456616c7565203d204e756d62657228617069526573706f6e73652e646174612e546178417373657373656456616c7565293b636f6e737420656e636f646564203d20616269436f6465722e656e636f6465285b6075696e74323536602c206075696e74323536602c206075696e74323536602c206075696e74323536605d2c205b746f6b656e49642c206c69737450726963652c206f726967696e616c4c69737450726963652c20746178417373657373656456616c75655d293b72657475726e206574686572732e676574427974657328656e636f646564293b00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000f694e193200268f9a4868e4aa017a0118c9a81770000000000000000000000000b9d5d9136855f6fec3c0993fee6e9ce8a297846000000000000000000000000000000000000000000000000ccf0a31a221f3c9b000000000000000000000000a9d587a00a31a52ed70d6026794a8fc5e2f5dcb00000000000000000000000000000000000000000000000000000000000000000