Contract details
0x1C430E795CA8Fb30063ca7c6c68E6e029bcCbe37
Contract name
0x1C430E795CA8Fb30063ca7c6c68E6e029bcCbe37
Creator
0x1C430E7...be37
at txn
0x1C430E7...be37
Balance
0
Transactions
Gas used
0
Last balance update
4300326
Transactions
Token transfers
Tokens
Internal txns
Coin balance history
Contract
Contract name
StakingManager
EVM Version
Paris
Optimization runs
200
Contract file path
contracts/StakingManager.sol
Compiler version
v0.8.9+commit.e5eed63a
Optimization enabled
true
Verified at
Dec 23, 12:28:32
StakingManager.sol
Loading...
Compiler Settings
{}
libraries:{},
optimizer:{},
enabled:true,
runs:200
outputSelection:{}
*:{}
[],
"ast"
*:[]
"abi",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"metadata"
Contract ABI
[]
{},
anonymous:false,
inputs:[],
{},
indexed:false,
internalType:"address",
name:"previousAdmin",
type:"address"
{}
indexed:false,
internalType:"address",
name:"newAdmin",
type:"address"
name:"AdminChanged",
type:"event"
{},
anonymous:false,
inputs:[],
{}
indexed:true,
internalType:"address",
name:"beacon",
type:"address"
name:"BeaconUpgraded",
type:"event"
{},
anonymous:false,
inputs:[],
{},
indexed:false,
internalType:"address",
name:"token",
type:"address"
{},
indexed:false,
internalType:"uint256",
name:"tokenId",
type:"uint256"
{},
indexed:false,
internalType:"uint256",
name:"amount",
type:"uint256"
{},
indexed:false,
internalType:"string",
name:"receiver",
type:"string"
{},
indexed:false,
internalType:"string",
name:"network",
type:"string"
{},
indexed:false,
internalType:"bool",
name:"isWrapped",
type:"bool"
{}
indexed:false,
internalType:"uint16",
name:"referralId",
type:"uint16"
name:"DepositedERC1155",
type:"event"
{},
anonymous:false,
inputs:[],
{},
indexed:false,
internalType:"address",
name:"token",
type:"address"
{},
indexed:false,
internalType:"uint256",
name:"amount",
type:"uint256"
{},
indexed:false,
internalType:"string",
name:"receiver",
type:"string"
{},
indexed:false,
internalType:"string",
name:"network",
type:"string"
{},
indexed:false,
internalType:"bool",
name:"isWrapped",
type:"bool"
{}
indexed:false,
internalType:"uint16",
name:"referralId",
type:"uint16"
name:"DepositedERC20",
type:"event"
{},
anonymous:false,
inputs:[],
{},
indexed:false,
internalType:"address",
name:"token",
type:"address"
{},
indexed:false,
internalType:"uint256",
name:"tokenId",
type:"uint256"
{},
indexed:false,
internalType:"string",
name:"receiver",
type:"string"
{},
indexed:false,
internalType:"string",
name:"network",
type:"string"
{},
indexed:false,
internalType:"bool",
name:"isWrapped",
type:"bool"
{}
indexed:false,
internalType:"uint16",
name:"referralId",
type:"uint16"
name:"DepositedERC721",
type:"event"
{},
anonymous:false,
inputs:[],
{},
indexed:false,
internalType:"uint256",
name:"amount",
type:"uint256"
{},
indexed:false,
internalType:"string",
name:"receiver",
type:"string"
{},
indexed:false,
internalType:"string",
name:"network",
type:"string"
{}
indexed:false,
internalType:"uint16",
name:"referralId",
type:"uint16"
name:"DepositedNative",
type:"event"
{},
anonymous:false,
inputs:[],
{}
indexed:false,
internalType:"uint8",
name:"version",
type:"uint8"
name:"Initialized",
type:"event"
{},
anonymous:false,
inputs:[],
{},
indexed:true,
internalType:"address",
name:"previousOwner",
type:"address"
{}
indexed:true,
internalType:"address",
name:"newOwner",
type:"address"
name:"OwnershipTransferred",
type:"event"
{},
anonymous:false,
inputs:[],
{}
indexed:true,
internalType:"address",
name:"implementation",
type:"address"
name:"Upgraded",
type:"event"
{},
inputs:[],
{},
internalType:"address[]",
name:"signers_",
type:"address[]"
{}
internalType:"uint256",
name:"signaturesThreshold_",
type:"uint256"
name:"__Bridge_init",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"address[]",
name:"signers_",
type:"address[]"
{}
internalType:"uint256",
name:"signaturesThreshold_",
type:"uint256"
name:"__Signers_init",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"bytes32",
name:"txHash_",
type:"bytes32"
{}
internalType:"uint256",
name:"txNonce_",
type:"uint256"
name:"addHash",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{}
internalType:"address[]",
name:"signers_",
type:"address[]"
name:"addSigners",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"bytes32",
name:"txHash_",
type:"bytes32"
{}
internalType:"uint256",
name:"txNonce_",
type:"uint256"
name:"containsHash",
outputs:[],
{}
internalType:"bool",
name:"",
type:"bool"
stateMutability:"view",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"token_",
type:"address"
{},
internalType:"uint256",
name:"tokenId_",
type:"uint256"
{},
internalType:"uint256",
name:"amount_",
type:"uint256"
{},
internalType:"string",
name:"receiver_",
type:"string"
{},
internalType:"string",
name:"network_",
type:"string"
{},
internalType:"bool",
name:"isWrapped_",
type:"bool"
{}
internalType:"uint16",
name:"referralId_",
type:"uint16"
name:"depositERC1155",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"token_",
type:"address"
{},
internalType:"uint256",
name:"amount_",
type:"uint256"
{},
internalType:"string",
name:"receiver_",
type:"string"
{},
internalType:"string",
name:"network_",
type:"string"
{},
internalType:"bool",
name:"isWrapped_",
type:"bool"
{}
internalType:"uint16",
name:"referralId_",
type:"uint16"
name:"depositERC20",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"token_",
type:"address"
{},
internalType:"uint256",
name:"tokenId_",
type:"uint256"
{},
internalType:"string",
name:"receiver_",
type:"string"
{},
internalType:"string",
name:"network_",
type:"string"
{},
internalType:"bool",
name:"isWrapped_",
type:"bool"
{}
internalType:"uint16",
name:"referralId_",
type:"uint16"
name:"depositERC721",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"string",
name:"receiver_",
type:"string"
{},
internalType:"string",
name:"network_",
type:"string"
{}
internalType:"uint16",
name:"referralId_",
type:"uint16"
name:"depositNative",
outputs:[],
stateMutability:"payable",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"token_",
type:"address"
{},
internalType:"uint256",
name:"tokenId_",
type:"uint256"
{},
internalType:"uint256",
name:"amount_",
type:"uint256"
{},
internalType:"address",
name:"receiver_",
type:"address"
{},
internalType:"bytes32",
name:"txHash_",
type:"bytes32"
{},
internalType:"uint256",
name:"txNonce_",
type:"uint256"
{},
internalType:"uint256",
name:"chainId_",
type:"uint256"
{},
internalType:"string",
name:"tokenURI_",
type:"string"
{}
internalType:"bool",
name:"isWrapped_",
type:"bool"
name:"getERC1155SignHash",
outputs:[],
{}
internalType:"bytes32",
name:"",
type:"bytes32"
stateMutability:"pure",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"token_",
type:"address"
{},
internalType:"uint256",
name:"amount_",
type:"uint256"
{},
internalType:"address",
name:"receiver_",
type:"address"
{},
internalType:"bytes32",
name:"txHash_",
type:"bytes32"
{},
internalType:"uint256",
name:"txNonce_",
type:"uint256"
{},
internalType:"uint256",
name:"chainId_",
type:"uint256"
{}
internalType:"bool",
name:"isWrapped_",
type:"bool"
name:"getERC20SignHash",
outputs:[],
{}
internalType:"bytes32",
name:"",
type:"bytes32"
stateMutability:"pure",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"token_",
type:"address"
{},
internalType:"uint256",
name:"tokenId_",
type:"uint256"
{},
internalType:"address",
name:"receiver_",
type:"address"
{},
internalType:"bytes32",
name:"txHash_",
type:"bytes32"
{},
internalType:"uint256",
name:"txNonce_",
type:"uint256"
{},
internalType:"uint256",
name:"chainId_",
type:"uint256"
{},
internalType:"string",
name:"tokenURI_",
type:"string"
{}
internalType:"bool",
name:"isWrapped_",
type:"bool"
name:"getERC721SignHash",
outputs:[],
{}
internalType:"bytes32",
name:"",
type:"bytes32"
stateMutability:"pure",
type:"function"
{},
inputs:[],
{},
internalType:"uint256",
name:"amount_",
type:"uint256"
{},
internalType:"address",
name:"receiver_",
type:"address"
{},
internalType:"bytes32",
name:"txHash_",
type:"bytes32"
{},
internalType:"uint256",
name:"txNonce_",
type:"uint256"
{}
internalType:"uint256",
name:"chainId_",
type:"uint256"
name:"getNativeSignHash",
outputs:[],
{}
internalType:"bytes32",
name:"",
type:"bytes32"
stateMutability:"pure",
type:"function"
{},
inputs:[],
name:"getSigners",
outputs:[],
{}
internalType:"address[]",
name:"",
type:"address[]"
stateMutability:"view",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"signerToUpdate_",
type:"address"
{},
internalType:"uint256",
name:"deadline_",
type:"uint256"
{},
internalType:"uint256",
name:"txNonce_",
type:"uint256"
{}
internalType:"bool",
name:"isAdding_",
type:"bool"
name:"getUpdateSignersSignHash",
outputs:[],
{}
internalType:"bytes32",
name:"",
type:"bytes32"
stateMutability:"pure",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"",
type:"address"
{},
internalType:"address",
name:"",
type:"address"
{},
internalType:"uint256[]",
name:"",
type:"uint256[]"
{},
internalType:"uint256[]",
name:"",
type:"uint256[]"
{}
internalType:"bytes",
name:"",
type:"bytes"
name:"onERC1155BatchReceived",
outputs:[],
{}
internalType:"bytes4",
name:"",
type:"bytes4"
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"",
type:"address"
{},
internalType:"address",
name:"",
type:"address"
{},
internalType:"uint256",
name:"",
type:"uint256"
{},
internalType:"uint256",
name:"",
type:"uint256"
{}
internalType:"bytes",
name:"",
type:"bytes"
name:"onERC1155Received",
outputs:[],
{}
internalType:"bytes4",
name:"",
type:"bytes4"
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"",
type:"address"
{},
internalType:"address",
name:"",
type:"address"
{},
internalType:"uint256",
name:"",
type:"uint256"
{}
internalType:"bytes",
name:"",
type:"bytes"
name:"onERC721Received",
outputs:[],
{}
internalType:"bytes4",
name:"",
type:"bytes4"
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
name:"owner",
outputs:[],
{}
internalType:"address",
name:"",
type:"address"
stateMutability:"view",
type:"function"
{},
inputs:[],
name:"proxiableUUID",
outputs:[],
{}
internalType:"bytes32",
name:"",
type:"bytes32"
stateMutability:"view",
type:"function"
{},
inputs:[],
{}
internalType:"address[]",
name:"signers_",
type:"address[]"
name:"removeSigners",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
name:"renounceOwnership",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{}
internalType:"uint256",
name:"signaturesThreshold_",
type:"uint256"
name:"setSignaturesThreshold",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
name:"signaturesThreshold",
outputs:[],
{}
internalType:"uint256",
name:"",
type:"uint256"
stateMutability:"view",
type:"function"
{},
inputs:[],
{}
internalType:"bytes4",
name:"interfaceId",
type:"bytes4"
name:"supportsInterface",
outputs:[],
{}
internalType:"bool",
name:"",
type:"bool"
stateMutability:"view",
type:"function"
{},
inputs:[],
{}
internalType:"address",
name:"newOwner",
type:"address"
name:"transferOwnership",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"signerToUpdate_",
type:"address"
{},
internalType:"uint256",
name:"deadline_",
type:"uint256"
{},
internalType:"uint256",
name:"txNonce_",
type:"uint256"
{},
internalType:"bool",
name:"isAdding_",
type:"bool"
{}
internalType:"bytes[]",
name:"signatures_",
type:"bytes[]"
name:"updateSigner",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{}
internalType:"address",
name:"newImplementation",
type:"address"
name:"upgradeTo",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"newImplementation",
type:"address"
{}
internalType:"bytes",
name:"data",
type:"bytes"
name:"upgradeToAndCall",
outputs:[],
stateMutability:"payable",
type:"function"
{},
inputs:[],
{}
internalType:"bytes32",
name:"",
type:"bytes32"
name:"usedHashes",
outputs:[],
{}
internalType:"bool",
name:"",
type:"bool"
stateMutability:"view",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"token_",
type:"address"
{},
internalType:"uint256",
name:"tokenId_",
type:"uint256"
{},
internalType:"uint256",
name:"amount_",
type:"uint256"
{},
internalType:"address",
name:"receiver_",
type:"address"
{},
internalType:"bytes32",
name:"txHash_",
type:"bytes32"
{},
internalType:"uint256",
name:"txNonce_",
type:"uint256"
{},
internalType:"string",
name:"tokenURI_",
type:"string"
{},
internalType:"bool",
name:"isWrapped_",
type:"bool"
{}
internalType:"bytes[]",
name:"signatures_",
type:"bytes[]"
name:"withdrawERC1155",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"token_",
type:"address"
{},
internalType:"uint256",
name:"amount_",
type:"uint256"
{},
internalType:"address",
name:"receiver_",
type:"address"
{},
internalType:"bytes32",
name:"txHash_",
type:"bytes32"
{},
internalType:"uint256",
name:"txNonce_",
type:"uint256"
{},
internalType:"bool",
name:"isWrapped_",
type:"bool"
{}
internalType:"bytes[]",
name:"signatures_",
type:"bytes[]"
name:"withdrawERC20",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"token_",
type:"address"
{},
internalType:"uint256",
name:"amount_",
type:"uint256"
{},
internalType:"address",
name:"receiver_",
type:"address"
{},
internalType:"bytes32",
name:"txHash_",
type:"bytes32"
{},
internalType:"uint256",
name:"txNonce_",
type:"uint256"
{},
internalType:"bool",
name:"isWrapped_",
type:"bool"
{},
internalType:"bytes32[]",
name:"merkleProof_",
type:"bytes32[]"
{}
internalType:"bytes[]",
name:"signatures_",
type:"bytes[]"
name:"withdrawERC20Merkelized",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"address",
name:"token_",
type:"address"
{},
internalType:"uint256",
name:"tokenId_",
type:"uint256"
{},
internalType:"address",
name:"receiver_",
type:"address"
{},
internalType:"bytes32",
name:"txHash_",
type:"bytes32"
{},
internalType:"uint256",
name:"txNonce_",
type:"uint256"
{},
internalType:"string",
name:"tokenURI_",
type:"string"
{},
internalType:"bool",
name:"isWrapped_",
type:"bool"
{}
internalType:"bytes[]",
name:"signatures_",
type:"bytes[]"
name:"withdrawERC721",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{},
inputs:[],
{},
internalType:"uint256",
name:"amount_",
type:"uint256"
{},
internalType:"address",
name:"receiver_",
type:"address"
{},
internalType:"bytes32",
name:"txHash_",
type:"bytes32"
{},
internalType:"uint256",
name:"txNonce_",
type:"uint256"
{}
internalType:"bytes[]",
name:"signatures_",
type:"bytes[]"
name:"withdrawNative",
outputs:[],
stateMutability:"nonpayable",
type:"function"
{}
stateMutability:"payable",
type:"receive"
Contract creation code
"0x60a06040523060805234801561001457600080fd5b506080516141f761004c60003960008181610872015281816108b201528181610952015281816109920152610a2501526141f76000f3fe6080604052600436106102085760003560e01c80638da5cb5b11610118578063b427d67c116100a0578063bf1fe08f1161006f578063bf1fe08f14610609578063e8906a2d14610629578063f23a6e6114610649578063f2fde38b14610675578063fa2422991461069557600080fd5b8063b427d67c1461057d578063b78681181461059d578063bc197c81146105bd578063be6f93d4146105e957600080fd5b806394cf795e116100e757806394cf795e146104cb578063aaba091e146104ed578063aef18bf71461050d578063af94570d1461053d578063b3953d441461055d57600080fd5b80638da5cb5b1461045057806390946c6e1461047857806390e208ee1461049857806394995fc4146104ab57600080fd5b806339ce73c71161019b5780635fe277561161016a5780635fe27756146103bb578063715018a6146103db5780637eb9d447146103f05780638338fcd8146104105780638d361e431461043057600080fd5b806339ce73c71461035d5780634f1ef2861461037357806352d1902d146103865780635bd5429d1461039b57600080fd5b8063150b7a02116101d7578063150b7a02146102b95780631c3d9c87146102fd578063337e03a91461031d5780633659cfe61461033d57600080fd5b806301ffc9a7146102145780630430285a14610249578063070d2c5d1461026957806309a558411461029757600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5061023461022f366004612e4f565b6106b5565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b50610234610264366004612e79565b6106ec565b34801561027557600080fd5b50610289610284366004612ec0565b61073b565b604051908152602001610240565b3480156102a357600080fd5b506102b76102b2366004612f4c565b61078b565b005b3480156102c557600080fd5b506102e46102d436600461304c565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610240565b34801561030957600080fd5b506102b76103183660046130b3565b6107db565b34801561032957600080fd5b50610289610338366004613123565b610814565b34801561034957600080fd5b506102b7610358366004613169565b610867565b34801561036957600080fd5b5061028960655481565b6102b7610381366004613184565b610947565b34801561039257600080fd5b50610289610a18565b3480156103a757600080fd5b506102b76103b6366004612e79565b610acb565b3480156103c757600080fd5b506102b76103d6366004613224565b610aff565b3480156103e757600080fd5b506102b7610cd0565b3480156103fc57600080fd5b506102b761040b3660046132d8565b610d06565b34801561041c57600080fd5b506102b761042b366004612f4c565b610d4b565b34801561043c57600080fd5b506102b761044b36600461339d565b610dc6565b34801561045c57600080fd5b506033546040516001600160a01b039091168152602001610240565b34801561048457600080fd5b506102b76104933660046133de565b610e40565b6102b76104a6366004613489565b610fb5565b3480156104b757600080fd5b506102b76104c6366004613509565b61104d565b3480156104d757600080fd5b506104e061108c565b604051610240919061359c565b3480156104f957600080fd5b506102896105083660046135e9565b61109d565b34801561051957600080fd5b50610234610528366004613657565b60686020526000908152604090205460ff1681565b34801561054957600080fd5b50610289610558366004613670565b611106565b34801561056957600080fd5b506102b761057836600461370e565b61114e565b34801561058957600080fd5b506102896105983660046137e3565b611196565b3480156105a957600080fd5b506102b76105b836600461388c565b6111e1565b3480156105c957600080fd5b506102e46105d836600461395b565b63bc197c8160e01b95945050505050565b3480156105f557600080fd5b506102b76106043660046133de565b611329565b34801561061557600080fd5b506102b7610624366004613657565b611488565b34801561063557600080fd5b506102b761064436600461339d565b611507565b34801561065557600080fd5b506102e4610664366004613a04565b63f23a6e6160e01b95945050505050565b34801561068157600080fd5b506102b7610690366004613169565b6115b0565b3480156106a157600080fd5b506102b76106b0366004613a68565b611648565b60006001600160e01b03198216630271189760e51b14806106e657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080838360405160200161070b929190918252602082015260400190565b60408051808303601f1901815291815281516020928301206000908152606890925290205460ff16949350505050565b6040805160609590951b6001600160601b03191660208087019190915260348601949094526054850192909252151560f81b60748401528051605581850301815260759093019052815191012090565b600054610100900460ff166107bb5760405162461bcd60e51b81526004016107b290613b05565b60405180910390fd5b6107c36116be565b6107cd8383611507565b6107d681611488565b505050565b60006107ea8787878746610814565b90506107f685856116ed565b610801818484611793565b61080b8787611897565b50505050505050565b6040805160208082019790975260609590951b6001600160601b03191685820152605485019390935260748401919091526094808401919091528151808403909101815260b49092019052805191012090565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156108b05760405162461bcd60e51b81526004016107b290613b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108f960008051602061417b833981519152546001600160a01b031690565b6001600160a01b03161461091f5760405162461bcd60e51b81526004016107b290613b9c565b610928816119e0565b6040805160008082526020820190925261094491839190611a0a565b50565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156109905760405162461bcd60e51b81526004016107b290613b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109d960008051602061417b833981519152546001600160a01b031690565b6001600160a01b0316146109ff5760405162461bcd60e51b81526004016107b290613b9c565b610a08826119e0565b610a1482826001611a0a565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ab85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107b2565b5060008051602061417b83398151915290565b6033546001600160a01b03163314610af55760405162461bcd60e51b81526004016107b290613be8565b610a1482826116ed565b6001600160a01b038916610b555760405162461bcd60e51b815260206004820152601a60248201527f4552433131353548616e646c65723a207a65726f20746f6b656e00000000000060448201526064016107b2565b60008711610ba55760405162461bcd60e51b815260206004820152601e60248201527f4552433131353548616e646c65723a20616d6f756e74206973207a65726f000060448201526064016107b2565b888215610c185760405163124d91e560e01b8152336004820152602481018a9052604481018990526001600160a01b0382169063124d91e590606401600060405180830381600087803b158015610bfb57600080fd5b505af1158015610c0f573d6000803e3d6000fd5b50505050610c7d565b604051637921219560e11b81526001600160a01b0382169063f242432a90610c4a90339030908e908e90600401613c1d565b600060405180830381600087803b158015610c6457600080fd5b505af1158015610c78573d6000803e3d6000fd5b505050505b7f6f2f9c82f8808cf5cb4332789c02c0c95fad4f7586899cc1bc426f254debf1658a8a8a8a8a8a8a8a8a604051610cbc99989796959493929190613c7e565b60405180910390a150505050505050505050565b6033546001600160a01b03163314610cfa5760405162461bcd60e51b81526004016107b290613be8565b610d046000611b84565b565b6000610d198b8b8b8b8b468c8c8c611106565b9050610d2588886116ed565b610d30818484611793565b610d3e8b8b8b898989611bd6565b5050505050505050505050565b6000610d576001611d52565b90508015610d6f576000805461ff0019166101001790555b610d7a84848461078b565b8015610dc0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6033546001600160a01b03163314610df05760405162461bcd60e51b81526004016107b290613be8565b60005b818110156107d657610e2d838383818110610e1057610e10613ce1565b9050602002016020810190610e259190613169565b606690611ddf565b5080610e3881613d0d565b915050610df3565b6001600160a01b038816610e925760405162461bcd60e51b815260206004820152601960248201527822a9219b9918a430b7323632b91d103d32b937903a37b5b2b760391b60448201526064016107b2565b878215610efe5760405163079cc67960e41b8152336004820152602481018990526001600160a01b038216906379cc679090604401600060405180830381600087803b158015610ee157600080fd5b505af1158015610ef5573d6000803e3d6000fd5b50505050610f65565b604051632142170760e11b8152336004820152306024820152604481018990526001600160a01b038216906342842e0e90606401600060405180830381600087803b158015610f4c57600080fd5b505af1158015610f60573d6000803e3d6000fd5b505050505b7f5a035a04c3f86dbf0cfe44e37374a1c7d8ad9d3b2542a39acaab6e3cb18e97388989898989898989604051610fa2989796959493929190613d28565b60405180910390a1505050505050505050565b600034116110055760405162461bcd60e51b815260206004820152601960248201527f4e617469766548616e646c65723a207a65726f2076616c75650000000000000060448201526064016107b2565b7f618bd7f3201fe12a7051eb9e8f45ac82a6648b19a07a79c9189ac480546e68c134868686868660405161103e96959493929190613d84565b60405180910390a15050505050565b600061105e8989898989468a61109d565b905061106a86866116ed565b611075818484611793565b61108189898987611dfb565b505050505050505050565b60606110986066611f7b565b905090565b604080516001600160601b03196060998a1b811660208084019190915260348301999099529690981b90951660548801526068870193909352608886019190915260a8850152151560f81b60c8840152805180840360a901815260c99093019052815191012090565b600089898989898989898960405160200161112999989796959493929190613dc9565b6040516020818303038152906040528051906020012090509998505050505050505050565b60006111628c8c8c8c8c8c468d8d8d611196565b905061116e88886116ed565b611179818484611793565b6111888c8c8c8c8a8a8a611f88565b505050505050505050505050565b60008a8a8a8a8a8a8a8a8a8a6040516020016111bb9a99989796959493929190613e2b565b6040516020818303038152906040528051906020012090509a9950505050505050505050565b428510156112425760405162461bcd60e51b815260206004820152602860248201527f5369676e6572733a20757064617465207369676e6572207369676e617475726560448201526708195e1c1a5c995960c21b60648201526084016107b2565b60006112508787878761073b565b905061125c81866116ed565b611267818484611793565b83156112d25761127687612160565b6112816066886121ad565b6112cd5760405162461bcd60e51b815260206004820152601e60248201527f5369676e6572733a207369676e657220616c726561647920657869737473000060448201526064016107b2565b61080b565b6112dd606688611ddf565b61080b5760405162461bcd60e51b815260206004820152601e60248201527f5369676e6572733a207369676e657220646f6573206e6f74206578697374000060448201526064016107b2565b6001600160a01b03881661137a5760405162461bcd60e51b815260206004820152601860248201527722a92199182430b7323632b91d103d32b937903a37b5b2b760411b60448201526064016107b2565b600087116113ca5760405162461bcd60e51b815260206004820152601c60248201527f455243323048616e646c65723a20616d6f756e74206973207a65726f0000000060448201526064016107b2565b8782156114365760405163079cc67960e41b8152336004820152602481018990526001600160a01b038216906379cc679090604401600060405180830381600087803b15801561141957600080fd5b505af115801561142d573d6000803e3d6000fd5b5050505061144b565b61144b6001600160a01b03821633308b6121c2565b7ffc11ca985085252b65dba84249af6977f9d4cb2acc79ee95fff01985d1b562758989898989898989604051610fa2989796959493929190613d28565b6033546001600160a01b031633146114b25760405162461bcd60e51b81526004016107b290613be8565b600081116115025760405162461bcd60e51b815260206004820152601a60248201527f5369676e6572733a20696e76616c6964207468726573686f6c6400000000000060448201526064016107b2565b606555565b6033546001600160a01b031633146115315760405162461bcd60e51b81526004016107b290613be8565b60005b818110156107d65761156b83838381811061155157611551613ce1565b90506020020160208101906115669190613169565b612160565b61159d83838381811061158057611580613ce1565b90506020020160208101906115959190613169565b6066906121ad565b50806115a881613d0d565b915050611534565b6033546001600160a01b031633146115da5760405162461bcd60e51b81526004016107b290613be8565b6001600160a01b03811661163f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b2565b61094481611b84565b60006116598b8b8b8b8b468c61109d565b9050600061169b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525086925061222d915050565b90506116a789896116ed565b6116b2818585611793565b6111888c8c8c8a611dfb565b600054610100900460ff166116e55760405162461bcd60e51b81526004016107b290613b05565b610d046122a1565b60408051602080820185905281830184905282518083038401815260609092018352815191810191909120600081815260689092529190205460ff16156117765760405162461bcd60e51b815260206004820152601e60248201527f4861736865733a207468652068617368206e6f6e63652069732075736564000060448201526064016107b2565b6000908152606860205260409020805460ff191660011790555050565b6000816001600160401b038111156117ad576117ad612f97565b6040519080825280602002602001820160405280156117d6578160200160208202803683370190505b50905060005b8281101561188d576118518484838181106117f9576117f9613ce1565b905060200281019061180b9190613e94565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061184b92508991506122d19050565b90612324565b82828151811061186357611863613ce1565b6001600160a01b03909216602092830291909101909101528061188581613d0d565b9150506117dc565b50610dc081612340565b600082116118e75760405162461bcd60e51b815260206004820152601d60248201527f4e617469766548616e646c65723a20616d6f756e74206973207a65726f00000060448201526064016107b2565b6001600160a01b03811661193d5760405162461bcd60e51b815260206004820152601f60248201527f4e617469766548616e646c65723a207265636569766572206973207a65726f0060448201526064016107b2565b6000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461198a576040519150601f19603f3d011682016040523d82523d6000602084013e61198f565b606091505b50509050806107d65760405162461bcd60e51b815260206004820152601d60248201527f4e617469766548616e646c65723a2063616e27742073656e642065746800000060448201526064016107b2565b6033546001600160a01b031633146109445760405162461bcd60e51b81526004016107b290613be8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a3d576107d6836124b8565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7657600080fd5b505afa925050508015611aa6575060408051601f3d908101601f19168201909252611aa391810190613eda565b60015b611b095760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107b2565b60008051602061417b8339815191528114611b785760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107b2565b506107d6838383612554565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038616611c285760405162461bcd60e51b815260206004820152601960248201527822a9219b9918a430b7323632b91d103d32b937903a37b5b2b760391b60448201526064016107b2565b6001600160a01b038416611c7e5760405162461bcd60e51b815260206004820152601c60248201527f45524337323148616e646c65723a207a65726f2072656365697665720000000060448201526064016107b2565b858115611cee57604051639f6ed25f60e01b81526001600160a01b03821690639f6ed25f90611cb79088908a9089908990600401613ef3565b600060405180830381600087803b158015611cd157600080fd5b505af1158015611ce5573d6000803e3d6000fd5b5050505061080b565b604051632142170760e11b81523060048201526001600160a01b038681166024830152604482018890528216906342842e0e90606401600060405180830381600087803b158015611d3e57600080fd5b505af1158015610d3e573d6000803e3d6000fd5b60008054610100900460ff1615611d99578160ff166001148015611d755750303b155b611d915760405162461bcd60e51b81526004016107b290613f1b565b506000919050565b60005460ff808416911610611dc05760405162461bcd60e51b81526004016107b290613f1b565b506000805460ff191660ff92909216919091179055600190565b919050565b6000611df4836001600160a01b038416612579565b9392505050565b6001600160a01b038416611e4c5760405162461bcd60e51b815260206004820152601860248201527722a92199182430b7323632b91d103d32b937903a37b5b2b760411b60448201526064016107b2565b60008311611e9c5760405162461bcd60e51b815260206004820152601c60248201527f455243323048616e646c65723a20616d6f756e74206973207a65726f0000000060448201526064016107b2565b6001600160a01b038216611ef25760405162461bcd60e51b815260206004820152601b60248201527f455243323048616e646c65723a207a65726f207265636569766572000000000060448201526064016107b2565b838115611f60576040516308934a5f60e31b81526001600160a01b0384811660048301526024820186905282169063449a52f890604401600060405180830381600087803b158015611f4357600080fd5b505af1158015611f57573d6000803e3d6000fd5b50505050611f74565b611f746001600160a01b038216848661266c565b5050505050565b60606000611df48361269c565b6001600160a01b038716611fde5760405162461bcd60e51b815260206004820152601a60248201527f4552433131353548616e646c65723a207a65726f20746f6b656e00000000000060448201526064016107b2565b6001600160a01b0384166120345760405162461bcd60e51b815260206004820152601d60248201527f4552433131353548616e646c65723a207a65726f20726563656976657200000060448201526064016107b2565b600085116120845760405162461bcd60e51b815260206004820152601e60248201527f4552433131353548616e646c65723a20616d6f756e74206973207a65726f000060448201526064016107b2565b8681156120f657604051633dbd5b2560e01b81526001600160a01b03821690633dbd5b25906120bf9088908b908b908a908a90600401613f69565b600060405180830381600087803b1580156120d957600080fd5b505af11580156120ed573d6000803e3d6000fd5b50505050612156565b604051637921219560e11b81526001600160a01b0382169063f242432a9061212890309089908c908c90600401613c1d565b600060405180830381600087803b15801561214257600080fd5b505af1158015611188573d6000803e3d6000fd5b5050505050505050565b6001600160a01b0381166109445760405162461bcd60e51b815260206004820152601460248201527329b4b3b732b9399d103d32b9379039b4b3b732b960611b60448201526064016107b2565b6000611df4836001600160a01b0384166126f8565b6040516001600160a01b0380851660248301528316604482015260648101829052610dc09085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612747565b600081815b845181101561229957600085828151811061224f5761224f613ce1565b602002602001015190508083116122755760008381526020829052604090209250612286565b600081815260208490526040902092505b508061229181613d0d565b915050612232565b509392505050565b600054610100900460ff166122c85760405162461bcd60e51b81526004016107b290613b05565b610d0433611b84565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b60008060006123338585612819565b9150915061229981612889565b6000805b82518110156124645761237a83828151811061236257612362613ce1565b60200260200101516066612a4490919063ffffffff16565b6123c65760405162461bcd60e51b815260206004820152601760248201527f5369676e6572733a20696e76616c6964207369676e657200000000000000000060448201526064016107b2565b600060988483815181106123dc576123dc613ce1565b60200260200101516001600160a01b0316901c60026123fb919061407b565b90508281161561244d5760405162461bcd60e51b815260206004820152601a60248201527f5369676e6572733a206475706c6963617465207369676e65727300000000000060448201526064016107b2565b91909117908061245c81613d0d565b915050612344565b5060655482511015610a145760405162461bcd60e51b815260206004820152601d60248201527f5369676e6572733a207468726573686f6c64206973206e6f74206d657400000060448201526064016107b2565b6001600160a01b0381163b6125255760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107b2565b60008051602061417b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61255d83612a66565b60008251118061256a5750805b156107d657610dc08383612aa6565b6000818152600183016020526040812054801561266257600061259d600183614087565b85549091506000906125b190600190614087565b90508181146126165760008660000182815481106125d1576125d1613ce1565b90600052602060002001549050808760000184815481106125f4576125f4613ce1565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806126275761262761409e565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106e6565b60009150506106e6565b6040516001600160a01b0383166024820152604481018290526107d690849063a9059cbb60e01b906064016121f6565b6060816000018054806020026020016040519081016040528092919081815260200182805480156126ec57602002820191906000526020600020905b8154815260200190600101908083116126d8575b50505050509050919050565b600081815260018301602052604081205461273f575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106e6565b5060006106e6565b600061279c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612acb9092919063ffffffff16565b8051909150156107d657808060200190518101906127ba91906140b4565b6107d65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107b2565b6000808251604114156128505760208301516040840151606085015160001a61284487828585612ae2565b94509450505050612882565b82516040141561287a576020830151604084015161286f868383612bcf565b935093505050612882565b506000905060025b9250929050565b600081600481111561289d5761289d6140d1565b14156128a65750565b60018160048111156128ba576128ba6140d1565b14156129085760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107b2565b600281600481111561291c5761291c6140d1565b141561296a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107b2565b600381600481111561297e5761297e6140d1565b14156129d75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016107b2565b60048160048111156129eb576129eb6140d1565b14156109445760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016107b2565b6001600160a01b03811660009081526001830160205260408120541515611df4565b612a6f816124b8565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611df4838360405180606001604052806027815260200161419b60279139612c08565b6060612ada8484600085612ce5565b949350505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612b195750600090506003612bc6565b8460ff16601b14158015612b3157508460ff16601c14155b15612b425750600090506004612bc6565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612b96573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612bbf57600060019250925050612bc6565b9150600090505b94509492505050565b6000806001600160ff1b03831681612bec60ff86901c601b6140e7565b9050612bfa87828885612ae2565b935093505050935093915050565b60606001600160a01b0384163b612c705760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107b2565b600080856001600160a01b031685604051612c8b919061412b565b600060405180830381855af49150503d8060008114612cc6576040519150601f19603f3d011682016040523d82523d6000602084013e612ccb565b606091505b5091509150612cdb828286612e16565b9695505050505050565b606082471015612d465760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107b2565b6001600160a01b0385163b612d9d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107b2565b600080866001600160a01b03168587604051612db9919061412b565b60006040518083038185875af1925050503d8060008114612df6576040519150601f19603f3d011682016040523d82523d6000602084013e612dfb565b606091505b5091509150612e0b828286612e16565b979650505050505050565b60608315612e25575081611df4565b825115612e355782518084602001fd5b8160405162461bcd60e51b81526004016107b29190614147565b600060208284031215612e6157600080fd5b81356001600160e01b031981168114611df457600080fd5b60008060408385031215612e8c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114611dda57600080fd5b801515811461094457600080fd5b60008060008060808587031215612ed657600080fd5b612edf85612e9b565b935060208501359250604085013591506060850135612efd81612eb2565b939692955090935050565b60008083601f840112612f1a57600080fd5b5081356001600160401b03811115612f3157600080fd5b6020830191508360208260051b850101111561288257600080fd5b600080600060408486031215612f6157600080fd5b83356001600160401b03811115612f7757600080fd5b612f8386828701612f08565b909790965060209590950135949350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612fd557612fd5612f97565b604052919050565b600082601f830112612fee57600080fd5b81356001600160401b0381111561300757613007612f97565b61301a601f8201601f1916602001612fad565b81815284602083860101111561302f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561306257600080fd5b61306b85612e9b565b935061307960208601612e9b565b92506040850135915060608501356001600160401b0381111561309b57600080fd5b6130a787828801612fdd565b91505092959194509250565b60008060008060008060a087890312156130cc57600080fd5b863595506130dc60208801612e9b565b9450604087013593506060870135925060808701356001600160401b0381111561310557600080fd5b61311189828a01612f08565b979a9699509497509295939492505050565b600080600080600060a0868803121561313b57600080fd5b8535945061314b60208701612e9b565b94979496505050506040830135926060810135926080909101359150565b60006020828403121561317b57600080fd5b611df482612e9b565b6000806040838503121561319757600080fd5b6131a083612e9b565b915060208301356001600160401b038111156131bb57600080fd5b6131c785828601612fdd565b9150509250929050565b60008083601f8401126131e357600080fd5b5081356001600160401b038111156131fa57600080fd5b60208301915083602082850101111561288257600080fd5b803561ffff81168114611dda57600080fd5b600080600080600080600080600060e08a8c03121561324257600080fd5b61324b8a612e9b565b985060208a0135975060408a0135965060608a01356001600160401b038082111561327557600080fd5b6132818d838e016131d1565b909850965060808c013591508082111561329a57600080fd5b506132a78c828d016131d1565b90955093505060a08a01356132bb81612eb2565b91506132c960c08b01613212565b90509295985092959850929598565b6000806000806000806000806000806101008b8d0312156132f857600080fd5b6133018b612e9b565b995060208b0135985061331660408c01612e9b565b975060608b0135965060808b0135955060a08b01356001600160401b038082111561334057600080fd5b61334c8e838f016131d1565b909750955060c08d0135915061336182612eb2565b90935060e08c0135908082111561337757600080fd5b506133848d828e01612f08565b915080935050809150509295989b9194979a5092959850565b600080602083850312156133b057600080fd5b82356001600160401b038111156133c657600080fd5b6133d285828601612f08565b90969095509350505050565b60008060008060008060008060c0898b0312156133fa57600080fd5b61340389612e9b565b97506020890135965060408901356001600160401b038082111561342657600080fd5b6134328c838d016131d1565b909850965060608b013591508082111561344b57600080fd5b506134588b828c016131d1565b909550935050608089013561346c81612eb2565b915061347a60a08a01613212565b90509295985092959890939650565b6000806000806000606086880312156134a157600080fd5b85356001600160401b03808211156134b857600080fd5b6134c489838a016131d1565b909750955060208801359150808211156134dd57600080fd5b506134ea888289016131d1565b90945092506134fd905060408701613212565b90509295509295909350565b60008060008060008060008060e0898b03121561352557600080fd5b61352e89612e9b565b97506020890135965061354360408a01612e9b565b9550606089013594506080890135935060a089013561356181612eb2565b925060c08901356001600160401b0381111561357c57600080fd5b6135888b828c01612f08565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b818110156135dd5783516001600160a01b0316835292840192918401916001016135b8565b50909695505050505050565b600080600080600080600060e0888a03121561360457600080fd5b61360d88612e9b565b96506020880135955061362260408901612e9b565b9450606088013593506080880135925060a0880135915060c088013561364781612eb2565b8091505092959891949750929550565b60006020828403121561366957600080fd5b5035919050565b60008060008060008060008060006101008a8c03121561368f57600080fd5b6136988a612e9b565b985060208a013597506136ad60408b01612e9b565b965060608a0135955060808a0135945060a08a0135935060c08a01356001600160401b038111156136dd57600080fd5b6136e98c828d016131d1565b90945092505060e08a01356136fd81612eb2565b809150509295985092959850929598565b60008060008060008060008060008060006101208c8e03121561373057600080fd5b6137398c612e9b565b9a5060208c0135995060408c0135985061375560608d01612e9b565b975060808c0135965060a08c013595506001600160401b038060c08e0135111561377e57600080fd5b61378e8e60c08f01358f016131d1565b90965094506137a060e08e0135612eb2565b60e08d01359350806101008e013511156137b957600080fd5b506137cb8d6101008e01358e01612f08565b81935080925050509295989b509295989b9093969950565b6000806000806000806000806000806101208b8d03121561380357600080fd5b61380c8b612e9b565b995060208b0135985060408b0135975061382860608c01612e9b565b965060808b0135955060a08b0135945060c08b0135935060e08b01356001600160401b0381111561385857600080fd5b6138648d828e016131d1565b9094509250506101008b013561387981612eb2565b809150509295989b9194979a5092959850565b60008060008060008060a087890312156138a557600080fd5b6138ae87612e9b565b9550602087013594506040870135935060608701356138cc81612eb2565b925060808701356001600160401b0381111561310557600080fd5b600082601f8301126138f857600080fd5b813560206001600160401b0382111561391357613913612f97565b8160051b613922828201612fad565b928352848101820192828101908785111561393c57600080fd5b83870192505b84831015612e0b57823582529183019190830190613942565b600080600080600060a0868803121561397357600080fd5b61397c86612e9b565b945061398a60208701612e9b565b935060408601356001600160401b03808211156139a657600080fd5b6139b289838a016138e7565b945060608801359150808211156139c857600080fd5b6139d489838a016138e7565b935060808801359150808211156139ea57600080fd5b506139f788828901612fdd565b9150509295509295909350565b600080600080600060a08688031215613a1c57600080fd5b613a2586612e9b565b9450613a3360208701612e9b565b9350604086013592506060860135915060808601356001600160401b03811115613a5c57600080fd5b6139f788828901612fdd565b6000806000806000806000806000806101008b8d031215613a8857600080fd5b613a918b612e9b565b995060208b01359850613aa660408c01612e9b565b975060608b0135965060808b0135955060a08b0135613ac481612eb2565b945060c08b01356001600160401b0380821115613ae057600080fd5b613aec8e838f01612f08565b909650945060e08d013591508082111561337757600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038a16815288602082015287604082015260e060608201526000613cac60e08301888a613c55565b8281036080840152613cbf818789613c55565b94151560a0840152505061ffff9190911660c090910152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415613d2157613d21613cf7565b5060010190565b60018060a01b038916815287602082015260c060408201526000613d5060c08301888a613c55565b8281036060840152613d63818789613c55565b9415156080840152505061ffff9190911660a0909101529695505050505050565b868152608060208201526000613d9e608083018789613c55565b8281036040840152613db1818688613c55565b91505061ffff83166060830152979650505050505050565b60006bffffffffffffffffffffffff19808c60601b1683528a6014840152808a60601b16603484015250876048830152866068830152856088830152838560a88401375090151560f81b910160a881019190915260a901979650505050505050565b60006bffffffffffffffffffffffff19808d60601b1683528b60148401528a6034840152808a60601b166054840152508760688301528660888301528560a8830152838560c88401375090151560f81b910160c881019190915260c90198975050505050505050565b6000808335601e19843603018112613eab57600080fd5b8301803591506001600160401b03821115613ec557600080fd5b60200191503681900382131561288257600080fd5b600060208284031215613eec57600080fd5b5051919050565b60018060a01b0385168152836020820152606060408201526000612cdb606083018486613c55565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60018060a01b0386168152846020820152836040820152608060608201526000612e0b608083018486613c55565b600181815b80851115613fd2578160001904821115613fb857613fb8613cf7565b80851615613fc557918102915b93841c9390800290613f9c565b509250929050565b600082613fe9575060016106e6565b81613ff6575060006106e6565b816001811461400c576002811461401657614032565b60019150506106e6565b60ff84111561402757614027613cf7565b50506001821b6106e6565b5060208310610133831016604e8410600b8410161715614055575081810a6106e6565b61405f8383613f97565b806000190482111561407357614073613cf7565b029392505050565b6000611df48383613fda565b60008282101561409957614099613cf7565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156140c657600080fd5b8151611df481612eb2565b634e487b7160e01b600052602160045260246000fd5b600082198211156140fa576140fa613cf7565b500190565b60005b8381101561411a578181015183820152602001614102565b83811115610dc05750506000910152565b6000825161413d8184602087016140ff565b9190910192915050565b60208152600082518060208401526141668160408501602087016140ff565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122074c744d503c339fef323f29e1899be5471f0f976ab1dcd3953d92f4343ecfcd364736f6c63430008090033"
Deployed ByteCode
"0x6080604052600436106102085760003560e01c80638da5cb5b11610118578063b427d67c116100a0578063bf1fe08f1161006f578063bf1fe08f14610609578063e8906a2d14610629578063f23a6e6114610649578063f2fde38b14610675578063fa2422991461069557600080fd5b8063b427d67c1461057d578063b78681181461059d578063bc197c81146105bd578063be6f93d4146105e957600080fd5b806394cf795e116100e757806394cf795e146104cb578063aaba091e146104ed578063aef18bf71461050d578063af94570d1461053d578063b3953d441461055d57600080fd5b80638da5cb5b1461045057806390946c6e1461047857806390e208ee1461049857806394995fc4146104ab57600080fd5b806339ce73c71161019b5780635fe277561161016a5780635fe27756146103bb578063715018a6146103db5780637eb9d447146103f05780638338fcd8146104105780638d361e431461043057600080fd5b806339ce73c71461035d5780634f1ef2861461037357806352d1902d146103865780635bd5429d1461039b57600080fd5b8063150b7a02116101d7578063150b7a02146102b95780631c3d9c87146102fd578063337e03a91461031d5780633659cfe61461033d57600080fd5b806301ffc9a7146102145780630430285a14610249578063070d2c5d1461026957806309a558411461029757600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5061023461022f366004612e4f565b6106b5565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b50610234610264366004612e79565b6106ec565b34801561027557600080fd5b50610289610284366004612ec0565b61073b565b604051908152602001610240565b3480156102a357600080fd5b506102b76102b2366004612f4c565b61078b565b005b3480156102c557600080fd5b506102e46102d436600461304c565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610240565b34801561030957600080fd5b506102b76103183660046130b3565b6107db565b34801561032957600080fd5b50610289610338366004613123565b610814565b34801561034957600080fd5b506102b7610358366004613169565b610867565b34801561036957600080fd5b5061028960655481565b6102b7610381366004613184565b610947565b34801561039257600080fd5b50610289610a18565b3480156103a757600080fd5b506102b76103b6366004612e79565b610acb565b3480156103c757600080fd5b506102b76103d6366004613224565b610aff565b3480156103e757600080fd5b506102b7610cd0565b3480156103fc57600080fd5b506102b761040b3660046132d8565b610d06565b34801561041c57600080fd5b506102b761042b366004612f4c565b610d4b565b34801561043c57600080fd5b506102b761044b36600461339d565b610dc6565b34801561045c57600080fd5b506033546040516001600160a01b039091168152602001610240565b34801561048457600080fd5b506102b76104933660046133de565b610e40565b6102b76104a6366004613489565b610fb5565b3480156104b757600080fd5b506102b76104c6366004613509565b61104d565b3480156104d757600080fd5b506104e061108c565b604051610240919061359c565b3480156104f957600080fd5b506102896105083660046135e9565b61109d565b34801561051957600080fd5b50610234610528366004613657565b60686020526000908152604090205460ff1681565b34801561054957600080fd5b50610289610558366004613670565b611106565b34801561056957600080fd5b506102b761057836600461370e565b61114e565b34801561058957600080fd5b506102896105983660046137e3565b611196565b3480156105a957600080fd5b506102b76105b836600461388c565b6111e1565b3480156105c957600080fd5b506102e46105d836600461395b565b63bc197c8160e01b95945050505050565b3480156105f557600080fd5b506102b76106043660046133de565b611329565b34801561061557600080fd5b506102b7610624366004613657565b611488565b34801561063557600080fd5b506102b761064436600461339d565b611507565b34801561065557600080fd5b506102e4610664366004613a04565b63f23a6e6160e01b95945050505050565b34801561068157600080fd5b506102b7610690366004613169565b6115b0565b3480156106a157600080fd5b506102b76106b0366004613a68565b611648565b60006001600160e01b03198216630271189760e51b14806106e657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080838360405160200161070b929190918252602082015260400190565b60408051808303601f1901815291815281516020928301206000908152606890925290205460ff16949350505050565b6040805160609590951b6001600160601b03191660208087019190915260348601949094526054850192909252151560f81b60748401528051605581850301815260759093019052815191012090565b600054610100900460ff166107bb5760405162461bcd60e51b81526004016107b290613b05565b60405180910390fd5b6107c36116be565b6107cd8383611507565b6107d681611488565b505050565b60006107ea8787878746610814565b90506107f685856116ed565b610801818484611793565b61080b8787611897565b50505050505050565b6040805160208082019790975260609590951b6001600160601b03191685820152605485019390935260748401919091526094808401919091528151808403909101815260b49092019052805191012090565b306001600160a01b037f0000000000000000000000001c430e795ca8fb30063ca7c6c68e6e029bccbe371614156108b05760405162461bcd60e51b81526004016107b290613b50565b7f0000000000000000000000001c430e795ca8fb30063ca7c6c68e6e029bccbe376001600160a01b03166108f960008051602061417b833981519152546001600160a01b031690565b6001600160a01b03161461091f5760405162461bcd60e51b81526004016107b290613b9c565b610928816119e0565b6040805160008082526020820190925261094491839190611a0a565b50565b306001600160a01b037f0000000000000000000000001c430e795ca8fb30063ca7c6c68e6e029bccbe371614156109905760405162461bcd60e51b81526004016107b290613b50565b7f0000000000000000000000001c430e795ca8fb30063ca7c6c68e6e029bccbe376001600160a01b03166109d960008051602061417b833981519152546001600160a01b031690565b6001600160a01b0316146109ff5760405162461bcd60e51b81526004016107b290613b9c565b610a08826119e0565b610a1482826001611a0a565b5050565b6000306001600160a01b037f0000000000000000000000001c430e795ca8fb30063ca7c6c68e6e029bccbe371614610ab85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107b2565b5060008051602061417b83398151915290565b6033546001600160a01b03163314610af55760405162461bcd60e51b81526004016107b290613be8565b610a1482826116ed565b6001600160a01b038916610b555760405162461bcd60e51b815260206004820152601a60248201527f4552433131353548616e646c65723a207a65726f20746f6b656e00000000000060448201526064016107b2565b60008711610ba55760405162461bcd60e51b815260206004820152601e60248201527f4552433131353548616e646c65723a20616d6f756e74206973207a65726f000060448201526064016107b2565b888215610c185760405163124d91e560e01b8152336004820152602481018a9052604481018990526001600160a01b0382169063124d91e590606401600060405180830381600087803b158015610bfb57600080fd5b505af1158015610c0f573d6000803e3d6000fd5b50505050610c7d565b604051637921219560e11b81526001600160a01b0382169063f242432a90610c4a90339030908e908e90600401613c1d565b600060405180830381600087803b158015610c6457600080fd5b505af1158015610c78573d6000803e3d6000fd5b505050505b7f6f2f9c82f8808cf5cb4332789c02c0c95fad4f7586899cc1bc426f254debf1658a8a8a8a8a8a8a8a8a604051610cbc99989796959493929190613c7e565b60405180910390a150505050505050505050565b6033546001600160a01b03163314610cfa5760405162461bcd60e51b81526004016107b290613be8565b610d046000611b84565b565b6000610d198b8b8b8b8b468c8c8c611106565b9050610d2588886116ed565b610d30818484611793565b610d3e8b8b8b898989611bd6565b5050505050505050505050565b6000610d576001611d52565b90508015610d6f576000805461ff0019166101001790555b610d7a84848461078b565b8015610dc0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6033546001600160a01b03163314610df05760405162461bcd60e51b81526004016107b290613be8565b60005b818110156107d657610e2d838383818110610e1057610e10613ce1565b9050602002016020810190610e259190613169565b606690611ddf565b5080610e3881613d0d565b915050610df3565b6001600160a01b038816610e925760405162461bcd60e51b815260206004820152601960248201527822a9219b9918a430b7323632b91d103d32b937903a37b5b2b760391b60448201526064016107b2565b878215610efe5760405163079cc67960e41b8152336004820152602481018990526001600160a01b038216906379cc679090604401600060405180830381600087803b158015610ee157600080fd5b505af1158015610ef5573d6000803e3d6000fd5b50505050610f65565b604051632142170760e11b8152336004820152306024820152604481018990526001600160a01b038216906342842e0e90606401600060405180830381600087803b158015610f4c57600080fd5b505af1158015610f60573d6000803e3d6000fd5b505050505b7f5a035a04c3f86dbf0cfe44e37374a1c7d8ad9d3b2542a39acaab6e3cb18e97388989898989898989604051610fa2989796959493929190613d28565b60405180910390a1505050505050505050565b600034116110055760405162461bcd60e51b815260206004820152601960248201527f4e617469766548616e646c65723a207a65726f2076616c75650000000000000060448201526064016107b2565b7f618bd7f3201fe12a7051eb9e8f45ac82a6648b19a07a79c9189ac480546e68c134868686868660405161103e96959493929190613d84565b60405180910390a15050505050565b600061105e8989898989468a61109d565b905061106a86866116ed565b611075818484611793565b61108189898987611dfb565b505050505050505050565b60606110986066611f7b565b905090565b604080516001600160601b03196060998a1b811660208084019190915260348301999099529690981b90951660548801526068870193909352608886019190915260a8850152151560f81b60c8840152805180840360a901815260c99093019052815191012090565b600089898989898989898960405160200161112999989796959493929190613dc9565b6040516020818303038152906040528051906020012090509998505050505050505050565b60006111628c8c8c8c8c8c468d8d8d611196565b905061116e88886116ed565b611179818484611793565b6111888c8c8c8c8a8a8a611f88565b505050505050505050505050565b60008a8a8a8a8a8a8a8a8a8a6040516020016111bb9a99989796959493929190613e2b565b6040516020818303038152906040528051906020012090509a9950505050505050505050565b428510156112425760405162461bcd60e51b815260206004820152602860248201527f5369676e6572733a20757064617465207369676e6572207369676e617475726560448201526708195e1c1a5c995960c21b60648201526084016107b2565b60006112508787878761073b565b905061125c81866116ed565b611267818484611793565b83156112d25761127687612160565b6112816066886121ad565b6112cd5760405162461bcd60e51b815260206004820152601e60248201527f5369676e6572733a207369676e657220616c726561647920657869737473000060448201526064016107b2565b61080b565b6112dd606688611ddf565b61080b5760405162461bcd60e51b815260206004820152601e60248201527f5369676e6572733a207369676e657220646f6573206e6f74206578697374000060448201526064016107b2565b6001600160a01b03881661137a5760405162461bcd60e51b815260206004820152601860248201527722a92199182430b7323632b91d103d32b937903a37b5b2b760411b60448201526064016107b2565b600087116113ca5760405162461bcd60e51b815260206004820152601c60248201527f455243323048616e646c65723a20616d6f756e74206973207a65726f0000000060448201526064016107b2565b8782156114365760405163079cc67960e41b8152336004820152602481018990526001600160a01b038216906379cc679090604401600060405180830381600087803b15801561141957600080fd5b505af115801561142d573d6000803e3d6000fd5b5050505061144b565b61144b6001600160a01b03821633308b6121c2565b7ffc11ca985085252b65dba84249af6977f9d4cb2acc79ee95fff01985d1b562758989898989898989604051610fa2989796959493929190613d28565b6033546001600160a01b031633146114b25760405162461bcd60e51b81526004016107b290613be8565b600081116115025760405162461bcd60e51b815260206004820152601a60248201527f5369676e6572733a20696e76616c6964207468726573686f6c6400000000000060448201526064016107b2565b606555565b6033546001600160a01b031633146115315760405162461bcd60e51b81526004016107b290613be8565b60005b818110156107d65761156b83838381811061155157611551613ce1565b90506020020160208101906115669190613169565b612160565b61159d83838381811061158057611580613ce1565b90506020020160208101906115959190613169565b6066906121ad565b50806115a881613d0d565b915050611534565b6033546001600160a01b031633146115da5760405162461bcd60e51b81526004016107b290613be8565b6001600160a01b03811661163f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b2565b61094481611b84565b60006116598b8b8b8b8b468c61109d565b9050600061169b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525086925061222d915050565b90506116a789896116ed565b6116b2818585611793565b6111888c8c8c8a611dfb565b600054610100900460ff166116e55760405162461bcd60e51b81526004016107b290613b05565b610d046122a1565b60408051602080820185905281830184905282518083038401815260609092018352815191810191909120600081815260689092529190205460ff16156117765760405162461bcd60e51b815260206004820152601e60248201527f4861736865733a207468652068617368206e6f6e63652069732075736564000060448201526064016107b2565b6000908152606860205260409020805460ff191660011790555050565b6000816001600160401b038111156117ad576117ad612f97565b6040519080825280602002602001820160405280156117d6578160200160208202803683370190505b50905060005b8281101561188d576118518484838181106117f9576117f9613ce1565b905060200281019061180b9190613e94565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061184b92508991506122d19050565b90612324565b82828151811061186357611863613ce1565b6001600160a01b03909216602092830291909101909101528061188581613d0d565b9150506117dc565b50610dc081612340565b600082116118e75760405162461bcd60e51b815260206004820152601d60248201527f4e617469766548616e646c65723a20616d6f756e74206973207a65726f00000060448201526064016107b2565b6001600160a01b03811661193d5760405162461bcd60e51b815260206004820152601f60248201527f4e617469766548616e646c65723a207265636569766572206973207a65726f0060448201526064016107b2565b6000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461198a576040519150601f19603f3d011682016040523d82523d6000602084013e61198f565b606091505b50509050806107d65760405162461bcd60e51b815260206004820152601d60248201527f4e617469766548616e646c65723a2063616e27742073656e642065746800000060448201526064016107b2565b6033546001600160a01b031633146109445760405162461bcd60e51b81526004016107b290613be8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a3d576107d6836124b8565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7657600080fd5b505afa925050508015611aa6575060408051601f3d908101601f19168201909252611aa391810190613eda565b60015b611b095760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107b2565b60008051602061417b8339815191528114611b785760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107b2565b506107d6838383612554565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038616611c285760405162461bcd60e51b815260206004820152601960248201527822a9219b9918a430b7323632b91d103d32b937903a37b5b2b760391b60448201526064016107b2565b6001600160a01b038416611c7e5760405162461bcd60e51b815260206004820152601c60248201527f45524337323148616e646c65723a207a65726f2072656365697665720000000060448201526064016107b2565b858115611cee57604051639f6ed25f60e01b81526001600160a01b03821690639f6ed25f90611cb79088908a9089908990600401613ef3565b600060405180830381600087803b158015611cd157600080fd5b505af1158015611ce5573d6000803e3d6000fd5b5050505061080b565b604051632142170760e11b81523060048201526001600160a01b038681166024830152604482018890528216906342842e0e90606401600060405180830381600087803b158015611d3e57600080fd5b505af1158015610d3e573d6000803e3d6000fd5b60008054610100900460ff1615611d99578160ff166001148015611d755750303b155b611d915760405162461bcd60e51b81526004016107b290613f1b565b506000919050565b60005460ff808416911610611dc05760405162461bcd60e51b81526004016107b290613f1b565b506000805460ff191660ff92909216919091179055600190565b919050565b6000611df4836001600160a01b038416612579565b9392505050565b6001600160a01b038416611e4c5760405162461bcd60e51b815260206004820152601860248201527722a92199182430b7323632b91d103d32b937903a37b5b2b760411b60448201526064016107b2565b60008311611e9c5760405162461bcd60e51b815260206004820152601c60248201527f455243323048616e646c65723a20616d6f756e74206973207a65726f0000000060448201526064016107b2565b6001600160a01b038216611ef25760405162461bcd60e51b815260206004820152601b60248201527f455243323048616e646c65723a207a65726f207265636569766572000000000060448201526064016107b2565b838115611f60576040516308934a5f60e31b81526001600160a01b0384811660048301526024820186905282169063449a52f890604401600060405180830381600087803b158015611f4357600080fd5b505af1158015611f57573d6000803e3d6000fd5b50505050611f74565b611f746001600160a01b038216848661266c565b5050505050565b60606000611df48361269c565b6001600160a01b038716611fde5760405162461bcd60e51b815260206004820152601a60248201527f4552433131353548616e646c65723a207a65726f20746f6b656e00000000000060448201526064016107b2565b6001600160a01b0384166120345760405162461bcd60e51b815260206004820152601d60248201527f4552433131353548616e646c65723a207a65726f20726563656976657200000060448201526064016107b2565b600085116120845760405162461bcd60e51b815260206004820152601e60248201527f4552433131353548616e646c65723a20616d6f756e74206973207a65726f000060448201526064016107b2565b8681156120f657604051633dbd5b2560e01b81526001600160a01b03821690633dbd5b25906120bf9088908b908b908a908a90600401613f69565b600060405180830381600087803b1580156120d957600080fd5b505af11580156120ed573d6000803e3d6000fd5b50505050612156565b604051637921219560e11b81526001600160a01b0382169063f242432a9061212890309089908c908c90600401613c1d565b600060405180830381600087803b15801561214257600080fd5b505af1158015611188573d6000803e3d6000fd5b5050505050505050565b6001600160a01b0381166109445760405162461bcd60e51b815260206004820152601460248201527329b4b3b732b9399d103d32b9379039b4b3b732b960611b60448201526064016107b2565b6000611df4836001600160a01b0384166126f8565b6040516001600160a01b0380851660248301528316604482015260648101829052610dc09085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612747565b600081815b845181101561229957600085828151811061224f5761224f613ce1565b602002602001015190508083116122755760008381526020829052604090209250612286565b600081815260208490526040902092505b508061229181613d0d565b915050612232565b509392505050565b600054610100900460ff166122c85760405162461bcd60e51b81526004016107b290613b05565b610d0433611b84565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b60008060006123338585612819565b9150915061229981612889565b6000805b82518110156124645761237a83828151811061236257612362613ce1565b60200260200101516066612a4490919063ffffffff16565b6123c65760405162461bcd60e51b815260206004820152601760248201527f5369676e6572733a20696e76616c6964207369676e657200000000000000000060448201526064016107b2565b600060988483815181106123dc576123dc613ce1565b60200260200101516001600160a01b0316901c60026123fb919061407b565b90508281161561244d5760405162461bcd60e51b815260206004820152601a60248201527f5369676e6572733a206475706c6963617465207369676e65727300000000000060448201526064016107b2565b91909117908061245c81613d0d565b915050612344565b5060655482511015610a145760405162461bcd60e51b815260206004820152601d60248201527f5369676e6572733a207468726573686f6c64206973206e6f74206d657400000060448201526064016107b2565b6001600160a01b0381163b6125255760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107b2565b60008051602061417b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61255d83612a66565b60008251118061256a5750805b156107d657610dc08383612aa6565b6000818152600183016020526040812054801561266257600061259d600183614087565b85549091506000906125b190600190614087565b90508181146126165760008660000182815481106125d1576125d1613ce1565b90600052602060002001549050808760000184815481106125f4576125f4613ce1565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806126275761262761409e565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106e6565b60009150506106e6565b6040516001600160a01b0383166024820152604481018290526107d690849063a9059cbb60e01b906064016121f6565b6060816000018054806020026020016040519081016040528092919081815260200182805480156126ec57602002820191906000526020600020905b8154815260200190600101908083116126d8575b50505050509050919050565b600081815260018301602052604081205461273f575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106e6565b5060006106e6565b600061279c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612acb9092919063ffffffff16565b8051909150156107d657808060200190518101906127ba91906140b4565b6107d65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107b2565b6000808251604114156128505760208301516040840151606085015160001a61284487828585612ae2565b94509450505050612882565b82516040141561287a576020830151604084015161286f868383612bcf565b935093505050612882565b506000905060025b9250929050565b600081600481111561289d5761289d6140d1565b14156128a65750565b60018160048111156128ba576128ba6140d1565b14156129085760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107b2565b600281600481111561291c5761291c6140d1565b141561296a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107b2565b600381600481111561297e5761297e6140d1565b14156129d75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016107b2565b60048160048111156129eb576129eb6140d1565b14156109445760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016107b2565b6001600160a01b03811660009081526001830160205260408120541515611df4565b612a6f816124b8565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611df4838360405180606001604052806027815260200161419b60279139612c08565b6060612ada8484600085612ce5565b949350505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612b195750600090506003612bc6565b8460ff16601b14158015612b3157508460ff16601c14155b15612b425750600090506004612bc6565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612b96573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612bbf57600060019250925050612bc6565b9150600090505b94509492505050565b6000806001600160ff1b03831681612bec60ff86901c601b6140e7565b9050612bfa87828885612ae2565b935093505050935093915050565b60606001600160a01b0384163b612c705760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107b2565b600080856001600160a01b031685604051612c8b919061412b565b600060405180830381855af49150503d8060008114612cc6576040519150601f19603f3d011682016040523d82523d6000602084013e612ccb565b606091505b5091509150612cdb828286612e16565b9695505050505050565b606082471015612d465760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107b2565b6001600160a01b0385163b612d9d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107b2565b600080866001600160a01b03168587604051612db9919061412b565b60006040518083038185875af1925050503d8060008114612df6576040519150601f19603f3d011682016040523d82523d6000602084013e612dfb565b606091505b5091509150612e0b828286612e16565b979650505050505050565b60608315612e25575081611df4565b825115612e355782518084602001fd5b8160405162461bcd60e51b81526004016107b29190614147565b600060208284031215612e6157600080fd5b81356001600160e01b031981168114611df457600080fd5b60008060408385031215612e8c57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114611dda57600080fd5b801515811461094457600080fd5b60008060008060808587031215612ed657600080fd5b612edf85612e9b565b935060208501359250604085013591506060850135612efd81612eb2565b939692955090935050565b60008083601f840112612f1a57600080fd5b5081356001600160401b03811115612f3157600080fd5b6020830191508360208260051b850101111561288257600080fd5b600080600060408486031215612f6157600080fd5b83356001600160401b03811115612f7757600080fd5b612f8386828701612f08565b909790965060209590950135949350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612fd557612fd5612f97565b604052919050565b600082601f830112612fee57600080fd5b81356001600160401b0381111561300757613007612f97565b61301a601f8201601f1916602001612fad565b81815284602083860101111561302f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561306257600080fd5b61306b85612e9b565b935061307960208601612e9b565b92506040850135915060608501356001600160401b0381111561309b57600080fd5b6130a787828801612fdd565b91505092959194509250565b60008060008060008060a087890312156130cc57600080fd5b863595506130dc60208801612e9b565b9450604087013593506060870135925060808701356001600160401b0381111561310557600080fd5b61311189828a01612f08565b979a9699509497509295939492505050565b600080600080600060a0868803121561313b57600080fd5b8535945061314b60208701612e9b565b94979496505050506040830135926060810135926080909101359150565b60006020828403121561317b57600080fd5b611df482612e9b565b6000806040838503121561319757600080fd5b6131a083612e9b565b915060208301356001600160401b038111156131bb57600080fd5b6131c785828601612fdd565b9150509250929050565b60008083601f8401126131e357600080fd5b5081356001600160401b038111156131fa57600080fd5b60208301915083602082850101111561288257600080fd5b803561ffff81168114611dda57600080fd5b600080600080600080600080600060e08a8c03121561324257600080fd5b61324b8a612e9b565b985060208a0135975060408a0135965060608a01356001600160401b038082111561327557600080fd5b6132818d838e016131d1565b909850965060808c013591508082111561329a57600080fd5b506132a78c828d016131d1565b90955093505060a08a01356132bb81612eb2565b91506132c960c08b01613212565b90509295985092959850929598565b6000806000806000806000806000806101008b8d0312156132f857600080fd5b6133018b612e9b565b995060208b0135985061331660408c01612e9b565b975060608b0135965060808b0135955060a08b01356001600160401b038082111561334057600080fd5b61334c8e838f016131d1565b909750955060c08d0135915061336182612eb2565b90935060e08c0135908082111561337757600080fd5b506133848d828e01612f08565b915080935050809150509295989b9194979a5092959850565b600080602083850312156133b057600080fd5b82356001600160401b038111156133c657600080fd5b6133d285828601612f08565b90969095509350505050565b60008060008060008060008060c0898b0312156133fa57600080fd5b61340389612e9b565b97506020890135965060408901356001600160401b038082111561342657600080fd5b6134328c838d016131d1565b909850965060608b013591508082111561344b57600080fd5b506134588b828c016131d1565b909550935050608089013561346c81612eb2565b915061347a60a08a01613212565b90509295985092959890939650565b6000806000806000606086880312156134a157600080fd5b85356001600160401b03808211156134b857600080fd5b6134c489838a016131d1565b909750955060208801359150808211156134dd57600080fd5b506134ea888289016131d1565b90945092506134fd905060408701613212565b90509295509295909350565b60008060008060008060008060e0898b03121561352557600080fd5b61352e89612e9b565b97506020890135965061354360408a01612e9b565b9550606089013594506080890135935060a089013561356181612eb2565b925060c08901356001600160401b0381111561357c57600080fd5b6135888b828c01612f08565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b818110156135dd5783516001600160a01b0316835292840192918401916001016135b8565b50909695505050505050565b600080600080600080600060e0888a03121561360457600080fd5b61360d88612e9b565b96506020880135955061362260408901612e9b565b9450606088013593506080880135925060a0880135915060c088013561364781612eb2565b8091505092959891949750929550565b60006020828403121561366957600080fd5b5035919050565b60008060008060008060008060006101008a8c03121561368f57600080fd5b6136988a612e9b565b985060208a013597506136ad60408b01612e9b565b965060608a0135955060808a0135945060a08a0135935060c08a01356001600160401b038111156136dd57600080fd5b6136e98c828d016131d1565b90945092505060e08a01356136fd81612eb2565b809150509295985092959850929598565b60008060008060008060008060008060006101208c8e03121561373057600080fd5b6137398c612e9b565b9a5060208c0135995060408c0135985061375560608d01612e9b565b975060808c0135965060a08c013595506001600160401b038060c08e0135111561377e57600080fd5b61378e8e60c08f01358f016131d1565b90965094506137a060e08e0135612eb2565b60e08d01359350806101008e013511156137b957600080fd5b506137cb8d6101008e01358e01612f08565b81935080925050509295989b509295989b9093969950565b6000806000806000806000806000806101208b8d03121561380357600080fd5b61380c8b612e9b565b995060208b0135985060408b0135975061382860608c01612e9b565b965060808b0135955060a08b0135945060c08b0135935060e08b01356001600160401b0381111561385857600080fd5b6138648d828e016131d1565b9094509250506101008b013561387981612eb2565b809150509295989b9194979a5092959850565b60008060008060008060a087890312156138a557600080fd5b6138ae87612e9b565b9550602087013594506040870135935060608701356138cc81612eb2565b925060808701356001600160401b0381111561310557600080fd5b600082601f8301126138f857600080fd5b813560206001600160401b0382111561391357613913612f97565b8160051b613922828201612fad565b928352848101820192828101908785111561393c57600080fd5b83870192505b84831015612e0b57823582529183019190830190613942565b600080600080600060a0868803121561397357600080fd5b61397c86612e9b565b945061398a60208701612e9b565b935060408601356001600160401b03808211156139a657600080fd5b6139b289838a016138e7565b945060608801359150808211156139c857600080fd5b6139d489838a016138e7565b935060808801359150808211156139ea57600080fd5b506139f788828901612fdd565b9150509295509295909350565b600080600080600060a08688031215613a1c57600080fd5b613a2586612e9b565b9450613a3360208701612e9b565b9350604086013592506060860135915060808601356001600160401b03811115613a5c57600080fd5b6139f788828901612fdd565b6000806000806000806000806000806101008b8d031215613a8857600080fd5b613a918b612e9b565b995060208b01359850613aa660408c01612e9b565b975060608b0135965060808b0135955060a08b0135613ac481612eb2565b945060c08b01356001600160401b0380821115613ae057600080fd5b613aec8e838f01612f08565b909650945060e08d013591508082111561337757600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038a16815288602082015287604082015260e060608201526000613cac60e08301888a613c55565b8281036080840152613cbf818789613c55565b94151560a0840152505061ffff9190911660c090910152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415613d2157613d21613cf7565b5060010190565b60018060a01b038916815287602082015260c060408201526000613d5060c08301888a613c55565b8281036060840152613d63818789613c55565b9415156080840152505061ffff9190911660a0909101529695505050505050565b868152608060208201526000613d9e608083018789613c55565b8281036040840152613db1818688613c55565b91505061ffff83166060830152979650505050505050565b60006bffffffffffffffffffffffff19808c60601b1683528a6014840152808a60601b16603484015250876048830152866068830152856088830152838560a88401375090151560f81b910160a881019190915260a901979650505050505050565b60006bffffffffffffffffffffffff19808d60601b1683528b60148401528a6034840152808a60601b166054840152508760688301528660888301528560a8830152838560c88401375090151560f81b910160c881019190915260c90198975050505050505050565b6000808335601e19843603018112613eab57600080fd5b8301803591506001600160401b03821115613ec557600080fd5b60200191503681900382131561288257600080fd5b600060208284031215613eec57600080fd5b5051919050565b60018060a01b0385168152836020820152606060408201526000612cdb606083018486613c55565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60018060a01b0386168152846020820152836040820152608060608201526000612e0b608083018486613c55565b600181815b80851115613fd2578160001904821115613fb857613fb8613cf7565b80851615613fc557918102915b93841c9390800290613f9c565b509250929050565b600082613fe9575060016106e6565b81613ff6575060006106e6565b816001811461400c576002811461401657614032565b60019150506106e6565b60ff84111561402757614027613cf7565b50506001821b6106e6565b5060208310610133831016604e8410600b8410161715614055575081810a6106e6565b61405f8383613f97565b806000190482111561407357614073613cf7565b029392505050565b6000611df48383613fda565b60008282101561409957614099613cf7565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156140c657600080fd5b8151611df481612eb2565b634e487b7160e01b600052602160045260246000fd5b600082198211156140fa576140fa613cf7565b500190565b60005b8381101561411a578181015183820152602001614102565b83811115610dc05750506000910152565b6000825161413d8184602087016140ff565b9190910192915050565b60208152600082518060208401526141668160408501602087016140ff565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122074c744d503c339fef323f29e1899be5471f0f976ab1dcd3953d92f4343ecfcd364736f6c63430008090033"