Contract details

0xa3B00Bc77ea08c4A2B62706D09Bb6555927FF5C1

Contract name

0xa3B00Bc77ea08c4A2B62706D09Bb6555927FF5C1

Creator

0xa3B00Bc...F5C1

at txn

0xa3B00Bc...F5C1

Balance

0

Transactions

Gas used

0

Last balance update

5224718

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

Jan 22, 16:58:31

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:"startTime_",
type:"uint256"
},
{
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:"startTime_",
type:"uint256"
},
{
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
"0x60a06040523060805234801561001457600080fd5b5060805161428361004c6000396000818161082d0152818161086d0152818161090d0152818161094d01526109e001526142836000f3fe6080604052600436106102085760003560e01c80638da5cb5b11610118578063b3953d44116100a0578063bf1fe08f1161006f578063bf1fe08f14610609578063e8906a2d14610629578063f23a6e6114610649578063f2fde38b14610675578063fa2422991461069557600080fd5b8063b3953d441461057d578063b427d67c1461059d578063bc197c81146105bd578063be6f93d4146105e957600080fd5b806394995fc4116100e757806394995fc4146104cb57806394cf795e146104eb578063aaba091e1461050d578063aef18bf71461052d578063af94570d1461055d57600080fd5b80638da5cb5b146104505780638f8267911461047857806390946c6e1461049857806390e208ee146104b857600080fd5b80634f1ef2861161019b57806368d447711161016a57806368d44771146103bb578063715018a6146103db5780637eb9d447146103f05780638338fcd8146104105780638d361e431461043057600080fd5b80634f1ef2861461035357806352d1902d146103665780635bd5429d1461037b5780635fe277561461039b57600080fd5b80631c3d9c87116101d75780631c3d9c87146102cf578063337e03a9146102ef5780633659cfe61461031d57806339ce73c71461033d57600080fd5b806301ffc9a7146102145780630430285a1461024957806309a5584114610269578063150b7a021461028b57600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5061023461022f366004612ea7565b6106b5565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b50610234610264366004612ed1565b6106ec565b34801561027557600080fd5b50610289610284366004612f37565b61073b565b005b34801561029757600080fd5b506102b66102a636600461304e565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610240565b3480156102db57600080fd5b506102896102ea3660046130b5565b61078b565b3480156102fb57600080fd5b5061030f61030a366004613125565b6107c4565b604051908152602001610240565b34801561032957600080fd5b5061028961033836600461316b565b610822565b34801561034957600080fd5b5061030f60655481565b610289610361366004613186565b610902565b34801561037257600080fd5b5061030f6109d3565b34801561038757600080fd5b50610289610396366004612ed1565b610a86565b3480156103a757600080fd5b506102896103b6366004613234565b610aba565b3480156103c757600080fd5b5061030f6103d63660046132e8565b610c8b565b3480156103e757600080fd5b50610289610ccd565b3480156103fc57600080fd5b5061028961040b36600461333c565b610d03565b34801561041c57600080fd5b5061028961042b366004612f37565b610d48565b34801561043c57600080fd5b5061028961044b366004613401565b610dc3565b34801561045c57600080fd5b506033546040516001600160a01b039091168152602001610240565b34801561048457600080fd5b50610289610493366004613442565b610e3d565b3480156104a457600080fd5b506102896104b33660046134c5565b610fea565b6102896104c6366004613570565b61115f565b3480156104d757600080fd5b506102896104e63660046135f0565b6111f7565b3480156104f757600080fd5b50610500611236565b6040516102409190613683565b34801561051957600080fd5b5061030f6105283660046136d0565b611247565b34801561053957600080fd5b5061023461054836600461373e565b60686020526000908152604090205460ff1681565b34801561056957600080fd5b5061030f610578366004613757565b6112b0565b34801561058957600080fd5b506102896105983660046137f5565b6112f8565b3480156105a957600080fd5b5061030f6105b83660046138ca565b611340565b3480156105c957600080fd5b506102b66105d83660046139e7565b63bc197c8160e01b95945050505050565b3480156105f557600080fd5b506102896106043660046134c5565b61138b565b34801561061557600080fd5b5061028961062436600461373e565b6114ea565b34801561063557600080fd5b50610289610644366004613401565b611569565b34801561065557600080fd5b506102b6610664366004613a90565b63f23a6e6160e01b95945050505050565b34801561068157600080fd5b5061028961069036600461316b565b611612565b3480156106a157600080fd5b506102896106b0366004613af4565b6116aa565b60006001600160e01b03198216630271189760e51b14806106e657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080838360405160200161070b929190918252602082015260400190565b60408051808303601f1901815291815281516020928301206000908152606890925290205460ff16949350505050565b600054610100900460ff1661076b5760405162461bcd60e51b815260040161076290613b91565b60405180910390fd5b610773611720565b61077d8383611569565b610786816114ea565b505050565b600061079a87878787466107c4565b90506107a6858561174f565b6107b18184846117f5565b6107bb87876118f9565b50505050505050565b60408051602081018790526001600160601b0319606087901b169181019190915260548101849052607481018390526094810182905260009060b4015b60405160208183030381529060405280519060200120905095945050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561086b5760405162461bcd60e51b815260040161076290613bdc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108b4600080516020614207833981519152546001600160a01b031690565b6001600160a01b0316146108da5760405162461bcd60e51b815260040161076290613c28565b6108e381611a42565b604080516000808252602082019092526108ff91839190611a6c565b50565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561094b5760405162461bcd60e51b815260040161076290613bdc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610994600080516020614207833981519152546001600160a01b031690565b6001600160a01b0316146109ba5760405162461bcd60e51b815260040161076290613c28565b6109c382611a42565b6109cf82826001611a6c565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a735760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610762565b5060008051602061420783398151915290565b6033546001600160a01b03163314610ab05760405162461bcd60e51b815260040161076290613c74565b6109cf828261174f565b6001600160a01b038916610b105760405162461bcd60e51b815260206004820152601a60248201527f4552433131353548616e646c65723a207a65726f20746f6b656e0000000000006044820152606401610762565b60008711610b605760405162461bcd60e51b815260206004820152601e60248201527f4552433131353548616e646c65723a20616d6f756e74206973207a65726f00006044820152606401610762565b888215610bd35760405163124d91e560e01b8152336004820152602481018a9052604481018990526001600160a01b0382169063124d91e590606401600060405180830381600087803b158015610bb657600080fd5b505af1158015610bca573d6000803e3d6000fd5b50505050610c38565b604051637921219560e11b81526001600160a01b0382169063f242432a90610c0590339030908e908e90600401613ca9565b600060405180830381600087803b158015610c1f57600080fd5b505af1158015610c33573d6000803e3d6000fd5b505050505b7f6f2f9c82f8808cf5cb4332789c02c0c95fad4f7586899cc1bc426f254debf1658a8a8a8a8a8a8a8a8a604051610c7799989796959493929190613d0a565b60405180910390a150505050505050505050565b6040516001600160601b0319606087901b16602082015260348101859052605481018490526074810183905281151560f81b6094820152600090609501610801565b6033546001600160a01b03163314610cf75760405162461bcd60e51b815260040161076290613c74565b610d016000611be6565b565b6000610d168b8b8b8b8b468c8c8c6112b0565b9050610d22888861174f565b610d2d8184846117f5565b610d3b8b8b8b898989611c38565b5050505050505050505050565b6000610d546001611db4565b90508015610d6c576000805461ff0019166101001790555b610d7784848461073b565b8015610dbd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6033546001600160a01b03163314610ded5760405162461bcd60e51b815260040161076290613c74565b60005b8181101561078657610e2a838383818110610e0d57610e0d613d6d565b9050602002016020810190610e22919061316b565b606690611e41565b5080610e3581613d99565b915050610df0565b428610610e985760405162461bcd60e51b815260206004820152602360248201527f4272696467653a20756e61626c6520746f20757064617465207369676e6572206044820152621e595d60ea1b6064820152608401610762565b42851015610ef85760405162461bcd60e51b815260206004820152602760248201527f4272696467653a20757064617465207369676e6572207369676e617475726520604482015266195e1c1a5c995960ca1b6064820152608401610762565b6000610f078888888888610c8b565b9050610f13818661174f565b610f1e8184846117f5565b8315610f8957610f2d88611e5d565b610f38606689611eaa565b610f845760405162461bcd60e51b815260206004820152601d60248201527f4272696467653a207369676e657220616c7265616479206578697374730000006044820152606401610762565b610fe0565b610f94606689611e41565b610fe05760405162461bcd60e51b815260206004820152601d60248201527f4272696467653a207369676e657220646f6573206e6f742065786973740000006044820152606401610762565b5050505050505050565b6001600160a01b03881661103c5760405162461bcd60e51b815260206004820152601960248201527822a9219b9918a430b7323632b91d103d32b937903a37b5b2b760391b6044820152606401610762565b8782156110a85760405163079cc67960e41b8152336004820152602481018990526001600160a01b038216906379cc679090604401600060405180830381600087803b15801561108b57600080fd5b505af115801561109f573d6000803e3d6000fd5b5050505061110f565b604051632142170760e11b8152336004820152306024820152604481018990526001600160a01b038216906342842e0e90606401600060405180830381600087803b1580156110f657600080fd5b505af115801561110a573d6000803e3d6000fd5b505050505b7f5a035a04c3f86dbf0cfe44e37374a1c7d8ad9d3b2542a39acaab6e3cb18e9738898989898989898960405161114c989796959493929190613db4565b60405180910390a1505050505050505050565b600034116111af5760405162461bcd60e51b815260206004820152601960248201527f4e617469766548616e646c65723a207a65726f2076616c7565000000000000006044820152606401610762565b7f618bd7f3201fe12a7051eb9e8f45ac82a6648b19a07a79c9189ac480546e68c13486868686866040516111e896959493929190613e10565b60405180910390a15050505050565b60006112088989898989468a611247565b9050611214868661174f565b61121f8184846117f5565b61122b89898987611ebf565b505050505050505050565b6060611242606661203f565b905090565b604080516001600160601b03196060998a1b811660208084019190915260348301999099529690981b90951660548801526068870193909352608886019190915260a8850152151560f81b60c8840152805180840360a901815260c99093019052815191012090565b60008989898989898989896040516020016112d399989796959493929190613e55565b6040516020818303038152906040528051906020012090509998505050505050505050565b600061130c8c8c8c8c8c8c468d8d8d611340565b9050611318888861174f565b6113238184846117f5565b6113328c8c8c8c8a8a8a61204c565b505050505050505050505050565b60008a8a8a8a8a8a8a8a8a8a6040516020016113659a99989796959493929190613eb7565b6040516020818303038152906040528051906020012090509a9950505050505050505050565b6001600160a01b0388166113dc5760405162461bcd60e51b815260206004820152601860248201527722a92199182430b7323632b91d103d32b937903a37b5b2b760411b6044820152606401610762565b6000871161142c5760405162461bcd60e51b815260206004820152601c60248201527f455243323048616e646c65723a20616d6f756e74206973207a65726f000000006044820152606401610762565b8782156114985760405163079cc67960e41b8152336004820152602481018990526001600160a01b038216906379cc679090604401600060405180830381600087803b15801561147b57600080fd5b505af115801561148f573d6000803e3d6000fd5b505050506114ad565b6114ad6001600160a01b03821633308b61221a565b7ffc11ca985085252b65dba84249af6977f9d4cb2acc79ee95fff01985d1b56275898989898989898960405161114c989796959493929190613db4565b6033546001600160a01b031633146115145760405162461bcd60e51b815260040161076290613c74565b600081116115645760405162461bcd60e51b815260206004820152601a60248201527f5369676e6572733a20696e76616c6964207468726573686f6c640000000000006044820152606401610762565b606555565b6033546001600160a01b031633146115935760405162461bcd60e51b815260040161076290613c74565b60005b81811015610786576115cd8383838181106115b3576115b3613d6d565b90506020020160208101906115c8919061316b565b611e5d565b6115ff8383838181106115e2576115e2613d6d565b90506020020160208101906115f7919061316b565b606690611eaa565b508061160a81613d99565b915050611596565b6033546001600160a01b0316331461163c5760405162461bcd60e51b815260040161076290613c74565b6001600160a01b0381166116a15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610762565b6108ff81611be6565b60006116bb8b8b8b8b8b468c611247565b905060006116fd868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250612285915050565b9050611709898961174f565b6117148185856117f5565b6113328c8c8c8a611ebf565b600054610100900460ff166117475760405162461bcd60e51b815260040161076290613b91565b610d016122f9565b60408051602080820185905281830184905282518083038401815260609092018352815191810191909120600081815260689092529190205460ff16156117d85760405162461bcd60e51b815260206004820152601e60248201527f4861736865733a207468652068617368206e6f6e6365206973207573656400006044820152606401610762565b6000908152606860205260409020805460ff191660011790555050565b6000816001600160401b0381111561180f5761180f612f99565b604051908082528060200260200182016040528015611838578160200160208202803683370190505b50905060005b828110156118ef576118b384848381811061185b5761185b613d6d565b905060200281019061186d9190613f20565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118ad92508991506123299050565b9061237c565b8282815181106118c5576118c5613d6d565b6001600160a01b0390921660209283029190910190910152806118e781613d99565b91505061183e565b50610dbd81612398565b600082116119495760405162461bcd60e51b815260206004820152601d60248201527f4e617469766548616e646c65723a20616d6f756e74206973207a65726f0000006044820152606401610762565b6001600160a01b03811661199f5760405162461bcd60e51b815260206004820152601f60248201527f4e617469766548616e646c65723a207265636569766572206973207a65726f006044820152606401610762565b6000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146119ec576040519150601f19603f3d011682016040523d82523d6000602084013e6119f1565b606091505b50509050806107865760405162461bcd60e51b815260206004820152601d60248201527f4e617469766548616e646c65723a2063616e27742073656e64206574680000006044820152606401610762565b6033546001600160a01b031633146108ff5760405162461bcd60e51b815260040161076290613c74565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a9f5761078683612510565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ad857600080fd5b505afa925050508015611b08575060408051601f3d908101601f19168201909252611b0591810190613f66565b60015b611b6b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610762565b6000805160206142078339815191528114611bda5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610762565b506107868383836125ac565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038616611c8a5760405162461bcd60e51b815260206004820152601960248201527822a9219b9918a430b7323632b91d103d32b937903a37b5b2b760391b6044820152606401610762565b6001600160a01b038416611ce05760405162461bcd60e51b815260206004820152601c60248201527f45524337323148616e646c65723a207a65726f207265636569766572000000006044820152606401610762565b858115611d5057604051639f6ed25f60e01b81526001600160a01b03821690639f6ed25f90611d199088908a9089908990600401613f7f565b600060405180830381600087803b158015611d3357600080fd5b505af1158015611d47573d6000803e3d6000fd5b505050506107bb565b604051632142170760e11b81523060048201526001600160a01b038681166024830152604482018890528216906342842e0e90606401600060405180830381600087803b158015611da057600080fd5b505af1158015610d3b573d6000803e3d6000fd5b60008054610100900460ff1615611dfb578160ff166001148015611dd75750303b155b611df35760405162461bcd60e51b815260040161076290613fa7565b506000919050565b60005460ff808416911610611e225760405162461bcd60e51b815260040161076290613fa7565b506000805460ff191660ff92909216919091179055600190565b919050565b6000611e56836001600160a01b0384166125d1565b9392505050565b6001600160a01b0381166108ff5760405162461bcd60e51b815260206004820152601460248201527329b4b3b732b9399d103d32b9379039b4b3b732b960611b6044820152606401610762565b6000611e56836001600160a01b0384166126c4565b6001600160a01b038416611f105760405162461bcd60e51b815260206004820152601860248201527722a92199182430b7323632b91d103d32b937903a37b5b2b760411b6044820152606401610762565b60008311611f605760405162461bcd60e51b815260206004820152601c60248201527f455243323048616e646c65723a20616d6f756e74206973207a65726f000000006044820152606401610762565b6001600160a01b038216611fb65760405162461bcd60e51b815260206004820152601b60248201527f455243323048616e646c65723a207a65726f20726563656976657200000000006044820152606401610762565b838115612024576040516308934a5f60e31b81526001600160a01b0384811660048301526024820186905282169063449a52f890604401600060405180830381600087803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b50505050612038565b6120386001600160a01b0382168486612713565b5050505050565b60606000611e5683612743565b6001600160a01b0387166120a25760405162461bcd60e51b815260206004820152601a60248201527f4552433131353548616e646c65723a207a65726f20746f6b656e0000000000006044820152606401610762565b6001600160a01b0384166120f85760405162461bcd60e51b815260206004820152601d60248201527f4552433131353548616e646c65723a207a65726f2072656365697665720000006044820152606401610762565b600085116121485760405162461bcd60e51b815260206004820152601e60248201527f4552433131353548616e646c65723a20616d6f756e74206973207a65726f00006044820152606401610762565b8681156121ba57604051633dbd5b2560e01b81526001600160a01b03821690633dbd5b25906121839088908b908b908a908a90600401613ff5565b600060405180830381600087803b15801561219d57600080fd5b505af11580156121b1573d6000803e3d6000fd5b50505050610fe0565b604051637921219560e11b81526001600160a01b0382169063f242432a906121ec90309089908c908c90600401613ca9565b600060405180830381600087803b15801561220657600080fd5b505af1158015611332573d6000803e3d6000fd5b6040516001600160a01b0380851660248301528316604482015260648101829052610dbd9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261279f565b600081815b84518110156122f15760008582815181106122a7576122a7613d6d565b602002602001015190508083116122cd57600083815260208290526040902092506122de565b600081815260208490526040902092505b50806122e981613d99565b91505061228a565b509392505050565b600054610100900460ff166123205760405162461bcd60e51b815260040161076290613b91565b610d0133611be6565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b600080600061238b8585612871565b915091506122f1816128e1565b6000805b82518110156124bc576123d28382815181106123ba576123ba613d6d565b60200260200101516066612a9c90919063ffffffff16565b61241e5760405162461bcd60e51b815260206004820152601760248201527f5369676e6572733a20696e76616c6964207369676e65720000000000000000006044820152606401610762565b6000609884838151811061243457612434613d6d565b60200260200101516001600160a01b0316901c60026124539190614107565b9050828116156124a55760405162461bcd60e51b815260206004820152601a60248201527f5369676e6572733a206475706c6963617465207369676e6572730000000000006044820152606401610762565b9190911790806124b481613d99565b91505061239c565b50606554825110156109cf5760405162461bcd60e51b815260206004820152601d60248201527f5369676e6572733a207468726573686f6c64206973206e6f74206d65740000006044820152606401610762565b6001600160a01b0381163b61257d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610762565b60008051602061420783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6125b583612abe565b6000825111806125c25750805b1561078657610dbd8383612afe565b600081815260018301602052604081205480156126ba5760006125f5600183614113565b855490915060009061260990600190614113565b905081811461266e57600086600001828154811061262957612629613d6d565b906000526020600020015490508087600001848154811061264c5761264c613d6d565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061267f5761267f61412a565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106e6565b60009150506106e6565b600081815260018301602052604081205461270b575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106e6565b5060006106e6565b6040516001600160a01b03831660248201526044810182905261078690849063a9059cbb60e01b9060640161224e565b60608160000180548060200260200160405190810160405280929190818152602001828054801561279357602002820191906000526020600020905b81548152602001906001019080831161277f575b50505050509050919050565b60006127f4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612b239092919063ffffffff16565b80519091501561078657808060200190518101906128129190614140565b6107865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610762565b6000808251604114156128a85760208301516040840151606085015160001a61289c87828585612b3a565b945094505050506128da565b8251604014156128d257602083015160408401516128c7868383612c27565b9350935050506128da565b506000905060025b9250929050565b60008160048111156128f5576128f561415d565b14156128fe5750565b60018160048111156129125761291261415d565b14156129605760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610762565b60028160048111156129745761297461415d565b14156129c25760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610762565b60038160048111156129d6576129d661415d565b1415612a2f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610762565b6004816004811115612a4357612a4361415d565b14156108ff5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610762565b6001600160a01b03811660009081526001830160205260408120541515611e56565b612ac781612510565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611e56838360405180606001604052806027815260200161422760279139612c60565b6060612b328484600085612d3d565b949350505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612b715750600090506003612c1e565b8460ff16601b14158015612b8957508460ff16601c14155b15612b9a5750600090506004612c1e565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612bee573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c1757600060019250925050612c1e565b9150600090505b94509492505050565b6000806001600160ff1b03831681612c4460ff86901c601b614173565b9050612c5287828885612b3a565b935093505050935093915050565b60606001600160a01b0384163b612cc85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610762565b600080856001600160a01b031685604051612ce391906141b7565b600060405180830381855af49150503d8060008114612d1e576040519150601f19603f3d011682016040523d82523d6000602084013e612d23565b606091505b5091509150612d33828286612e6e565b9695505050505050565b606082471015612d9e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610762565b6001600160a01b0385163b612df55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610762565b600080866001600160a01b03168587604051612e1191906141b7565b60006040518083038185875af1925050503d8060008114612e4e576040519150601f19603f3d011682016040523d82523d6000602084013e612e53565b606091505b5091509150612e63828286612e6e565b979650505050505050565b60608315612e7d575081611e56565b825115612e8d5782518084602001fd5b8160405162461bcd60e51b815260040161076291906141d3565b600060208284031215612eb957600080fd5b81356001600160e01b031981168114611e5657600080fd5b60008060408385031215612ee457600080fd5b50508035926020909101359150565b60008083601f840112612f0557600080fd5b5081356001600160401b03811115612f1c57600080fd5b6020830191508360208260051b85010111156128da57600080fd5b600080600060408486031215612f4c57600080fd5b83356001600160401b03811115612f6257600080fd5b612f6e86828701612ef3565b909790965060209590950135949350505050565b80356001600160a01b0381168114611e3c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612fd757612fd7612f99565b604052919050565b600082601f830112612ff057600080fd5b81356001600160401b0381111561300957613009612f99565b61301c601f8201601f1916602001612faf565b81815284602083860101111561303157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561306457600080fd5b61306d85612f82565b935061307b60208601612f82565b92506040850135915060608501356001600160401b0381111561309d57600080fd5b6130a987828801612fdf565b91505092959194509250565b60008060008060008060a087890312156130ce57600080fd5b863595506130de60208801612f82565b9450604087013593506060870135925060808701356001600160401b0381111561310757600080fd5b61311389828a01612ef3565b979a9699509497509295939492505050565b600080600080600060a0868803121561313d57600080fd5b8535945061314d60208701612f82565b94979496505050506040830135926060810135926080909101359150565b60006020828403121561317d57600080fd5b611e5682612f82565b6000806040838503121561319957600080fd5b6131a283612f82565b915060208301356001600160401b038111156131bd57600080fd5b6131c985828601612fdf565b9150509250929050565b60008083601f8401126131e557600080fd5b5081356001600160401b038111156131fc57600080fd5b6020830191508360208285010111156128da57600080fd5b80151581146108ff57600080fd5b803561ffff81168114611e3c57600080fd5b600080600080600080600080600060e08a8c03121561325257600080fd5b61325b8a612f82565b985060208a0135975060408a0135965060608a01356001600160401b038082111561328557600080fd5b6132918d838e016131d3565b909850965060808c01359150808211156132aa57600080fd5b506132b78c828d016131d3565b90955093505060a08a01356132cb81613214565b91506132d960c08b01613222565b90509295985092959850929598565b600080600080600060a0868803121561330057600080fd5b61330986612f82565b9450602086013593506040860135925060608601359150608086013561332e81613214565b809150509295509295909350565b6000806000806000806000806000806101008b8d03121561335c57600080fd5b6133658b612f82565b995060208b0135985061337a60408c01612f82565b975060608b0135965060808b0135955060a08b01356001600160401b03808211156133a457600080fd5b6133b08e838f016131d3565b909750955060c08d013591506133c582613214565b90935060e08c013590808211156133db57600080fd5b506133e88d828e01612ef3565b915080935050809150509295989b9194979a5092959850565b6000806020838503121561341457600080fd5b82356001600160401b0381111561342a57600080fd5b61343685828601612ef3565b90969095509350505050565b600080600080600080600060c0888a03121561345d57600080fd5b61346688612f82565b9650602088013595506040880135945060608801359350608088013561348b81613214565b925060a08801356001600160401b038111156134a657600080fd5b6134b28a828b01612ef3565b989b979a50959850939692959293505050565b60008060008060008060008060c0898b0312156134e157600080fd5b6134ea89612f82565b97506020890135965060408901356001600160401b038082111561350d57600080fd5b6135198c838d016131d3565b909850965060608b013591508082111561353257600080fd5b5061353f8b828c016131d3565b909550935050608089013561355381613214565b915061356160a08a01613222565b90509295985092959890939650565b60008060008060006060868803121561358857600080fd5b85356001600160401b038082111561359f57600080fd5b6135ab89838a016131d3565b909750955060208801359150808211156135c457600080fd5b506135d1888289016131d3565b90945092506135e4905060408701613222565b90509295509295909350565b60008060008060008060008060e0898b03121561360c57600080fd5b61361589612f82565b97506020890135965061362a60408a01612f82565b9550606089013594506080890135935060a089013561364881613214565b925060c08901356001600160401b0381111561366357600080fd5b61366f8b828c01612ef3565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b818110156136c45783516001600160a01b03168352928401929184019160010161369f565b50909695505050505050565b600080600080600080600060e0888a0312156136eb57600080fd5b6136f488612f82565b96506020880135955061370960408901612f82565b9450606088013593506080880135925060a0880135915060c088013561372e81613214565b8091505092959891949750929550565b60006020828403121561375057600080fd5b5035919050565b60008060008060008060008060006101008a8c03121561377657600080fd5b61377f8a612f82565b985060208a0135975061379460408b01612f82565b965060608a0135955060808a0135945060a08a0135935060c08a01356001600160401b038111156137c457600080fd5b6137d08c828d016131d3565b90945092505060e08a01356137e481613214565b809150509295985092959850929598565b60008060008060008060008060008060006101208c8e03121561381757600080fd5b6138208c612f82565b9a5060208c0135995060408c0135985061383c60608d01612f82565b975060808c0135965060a08c013595506001600160401b038060c08e0135111561386557600080fd5b6138758e60c08f01358f016131d3565b909650945061388760e08e0135613214565b60e08d01359350806101008e013511156138a057600080fd5b506138b28d6101008e01358e01612ef3565b81935080925050509295989b509295989b9093969950565b6000806000806000806000806000806101208b8d0312156138ea57600080fd5b6138f38b612f82565b995060208b0135985060408b0135975061390f60608c01612f82565b965060808b0135955060a08b0135945060c08b0135935060e08b01356001600160401b0381111561393f57600080fd5b61394b8d828e016131d3565b9094509250506101008b013561396081613214565b809150509295989b9194979a5092959850565b600082601f83011261398457600080fd5b813560206001600160401b0382111561399f5761399f612f99565b8160051b6139ae828201612faf565b92835284810182019282810190878511156139c857600080fd5b83870192505b84831015612e63578235825291830191908301906139ce565b600080600080600060a086880312156139ff57600080fd5b613a0886612f82565b9450613a1660208701612f82565b935060408601356001600160401b0380821115613a3257600080fd5b613a3e89838a01613973565b94506060880135915080821115613a5457600080fd5b613a6089838a01613973565b93506080880135915080821115613a7657600080fd5b50613a8388828901612fdf565b9150509295509295909350565b600080600080600060a08688031215613aa857600080fd5b613ab186612f82565b9450613abf60208701612f82565b9350604086013592506060860135915060808601356001600160401b03811115613ae857600080fd5b613a8388828901612fdf565b6000806000806000806000806000806101008b8d031215613b1457600080fd5b613b1d8b612f82565b995060208b01359850613b3260408c01612f82565b975060608b0135965060808b0135955060a08b0135613b5081613214565b945060c08b01356001600160401b0380821115613b6c57600080fd5b613b788e838f01612ef3565b909650945060e08d01359150808211156133db57600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038a16815288602082015287604082015260e060608201526000613d3860e08301888a613ce1565b8281036080840152613d4b818789613ce1565b94151560a0840152505061ffff9190911660c090910152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415613dad57613dad613d83565b5060010190565b60018060a01b038916815287602082015260c060408201526000613ddc60c08301888a613ce1565b8281036060840152613def818789613ce1565b9415156080840152505061ffff9190911660a0909101529695505050505050565b868152608060208201526000613e2a608083018789613ce1565b8281036040840152613e3d818688613ce1565b91505061ffff83166060830152979650505050505050565b60006bffffffffffffffffffffffff19808c60601b1683528a6014840152808a60601b16603484015250876048830152866068830152856088830152838560a88401375090151560f81b910160a881019190915260a901979650505050505050565b60006bffffffffffffffffffffffff19808d60601b1683528b60148401528a6034840152808a60601b166054840152508760688301528660888301528560a8830152838560c88401375090151560f81b910160c881019190915260c90198975050505050505050565b6000808335601e19843603018112613f3757600080fd5b8301803591506001600160401b03821115613f5157600080fd5b6020019150368190038213156128da57600080fd5b600060208284031215613f7857600080fd5b5051919050565b60018060a01b0385168152836020820152606060408201526000612d33606083018486613ce1565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60018060a01b0386168152846020820152836040820152608060608201526000612e63608083018486613ce1565b600181815b8085111561405e57816000190482111561404457614044613d83565b8085161561405157918102915b93841c9390800290614028565b509250929050565b600082614075575060016106e6565b81614082575060006106e6565b816001811461409857600281146140a2576140be565b60019150506106e6565b60ff8411156140b3576140b3613d83565b50506001821b6106e6565b5060208310610133831016604e8410600b84101617156140e1575081810a6106e6565b6140eb8383614023565b80600019048211156140ff576140ff613d83565b029392505050565b6000611e568383614066565b60008282101561412557614125613d83565b500390565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561415257600080fd5b8151611e5681613214565b634e487b7160e01b600052602160045260246000fd5b6000821982111561418657614186613d83565b500190565b60005b838110156141a657818101518382015260200161418e565b83811115610dbd5750506000910152565b600082516141c981846020870161418b565b9190910192915050565b60208152600082518060208401526141f281604085016020870161418b565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f3e1a9a931834ef3300452b84bce3d4bb29f7e74dea7f192ef087263b7eb537864736f6c63430008090033"
Deployed ByteCode
"0x6080604052600436106102085760003560e01c80638da5cb5b11610118578063b3953d44116100a0578063bf1fe08f1161006f578063bf1fe08f14610609578063e8906a2d14610629578063f23a6e6114610649578063f2fde38b14610675578063fa2422991461069557600080fd5b8063b3953d441461057d578063b427d67c1461059d578063bc197c81146105bd578063be6f93d4146105e957600080fd5b806394995fc4116100e757806394995fc4146104cb57806394cf795e146104eb578063aaba091e1461050d578063aef18bf71461052d578063af94570d1461055d57600080fd5b80638da5cb5b146104505780638f8267911461047857806390946c6e1461049857806390e208ee146104b857600080fd5b80634f1ef2861161019b57806368d447711161016a57806368d44771146103bb578063715018a6146103db5780637eb9d447146103f05780638338fcd8146104105780638d361e431461043057600080fd5b80634f1ef2861461035357806352d1902d146103665780635bd5429d1461037b5780635fe277561461039b57600080fd5b80631c3d9c87116101d75780631c3d9c87146102cf578063337e03a9146102ef5780633659cfe61461031d57806339ce73c71461033d57600080fd5b806301ffc9a7146102145780630430285a1461024957806309a5584114610269578063150b7a021461028b57600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5061023461022f366004612ea7565b6106b5565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b50610234610264366004612ed1565b6106ec565b34801561027557600080fd5b50610289610284366004612f37565b61073b565b005b34801561029757600080fd5b506102b66102a636600461304e565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610240565b3480156102db57600080fd5b506102896102ea3660046130b5565b61078b565b3480156102fb57600080fd5b5061030f61030a366004613125565b6107c4565b604051908152602001610240565b34801561032957600080fd5b5061028961033836600461316b565b610822565b34801561034957600080fd5b5061030f60655481565b610289610361366004613186565b610902565b34801561037257600080fd5b5061030f6109d3565b34801561038757600080fd5b50610289610396366004612ed1565b610a86565b3480156103a757600080fd5b506102896103b6366004613234565b610aba565b3480156103c757600080fd5b5061030f6103d63660046132e8565b610c8b565b3480156103e757600080fd5b50610289610ccd565b3480156103fc57600080fd5b5061028961040b36600461333c565b610d03565b34801561041c57600080fd5b5061028961042b366004612f37565b610d48565b34801561043c57600080fd5b5061028961044b366004613401565b610dc3565b34801561045c57600080fd5b506033546040516001600160a01b039091168152602001610240565b34801561048457600080fd5b50610289610493366004613442565b610e3d565b3480156104a457600080fd5b506102896104b33660046134c5565b610fea565b6102896104c6366004613570565b61115f565b3480156104d757600080fd5b506102896104e63660046135f0565b6111f7565b3480156104f757600080fd5b50610500611236565b6040516102409190613683565b34801561051957600080fd5b5061030f6105283660046136d0565b611247565b34801561053957600080fd5b5061023461054836600461373e565b60686020526000908152604090205460ff1681565b34801561056957600080fd5b5061030f610578366004613757565b6112b0565b34801561058957600080fd5b506102896105983660046137f5565b6112f8565b3480156105a957600080fd5b5061030f6105b83660046138ca565b611340565b3480156105c957600080fd5b506102b66105d83660046139e7565b63bc197c8160e01b95945050505050565b3480156105f557600080fd5b506102896106043660046134c5565b61138b565b34801561061557600080fd5b5061028961062436600461373e565b6114ea565b34801561063557600080fd5b50610289610644366004613401565b611569565b34801561065557600080fd5b506102b6610664366004613a90565b63f23a6e6160e01b95945050505050565b34801561068157600080fd5b5061028961069036600461316b565b611612565b3480156106a157600080fd5b506102896106b0366004613af4565b6116aa565b60006001600160e01b03198216630271189760e51b14806106e657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080838360405160200161070b929190918252602082015260400190565b60408051808303601f1901815291815281516020928301206000908152606890925290205460ff16949350505050565b600054610100900460ff1661076b5760405162461bcd60e51b815260040161076290613b91565b60405180910390fd5b610773611720565b61077d8383611569565b610786816114ea565b505050565b600061079a87878787466107c4565b90506107a6858561174f565b6107b18184846117f5565b6107bb87876118f9565b50505050505050565b60408051602081018790526001600160601b0319606087901b169181019190915260548101849052607481018390526094810182905260009060b4015b60405160208183030381529060405280519060200120905095945050505050565b306001600160a01b037f000000000000000000000000a3b00bc77ea08c4a2b62706d09bb6555927ff5c116141561086b5760405162461bcd60e51b815260040161076290613bdc565b7f000000000000000000000000a3b00bc77ea08c4a2b62706d09bb6555927ff5c16001600160a01b03166108b4600080516020614207833981519152546001600160a01b031690565b6001600160a01b0316146108da5760405162461bcd60e51b815260040161076290613c28565b6108e381611a42565b604080516000808252602082019092526108ff91839190611a6c565b50565b306001600160a01b037f000000000000000000000000a3b00bc77ea08c4a2b62706d09bb6555927ff5c116141561094b5760405162461bcd60e51b815260040161076290613bdc565b7f000000000000000000000000a3b00bc77ea08c4a2b62706d09bb6555927ff5c16001600160a01b0316610994600080516020614207833981519152546001600160a01b031690565b6001600160a01b0316146109ba5760405162461bcd60e51b815260040161076290613c28565b6109c382611a42565b6109cf82826001611a6c565b5050565b6000306001600160a01b037f000000000000000000000000a3b00bc77ea08c4a2b62706d09bb6555927ff5c11614610a735760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610762565b5060008051602061420783398151915290565b6033546001600160a01b03163314610ab05760405162461bcd60e51b815260040161076290613c74565b6109cf828261174f565b6001600160a01b038916610b105760405162461bcd60e51b815260206004820152601a60248201527f4552433131353548616e646c65723a207a65726f20746f6b656e0000000000006044820152606401610762565b60008711610b605760405162461bcd60e51b815260206004820152601e60248201527f4552433131353548616e646c65723a20616d6f756e74206973207a65726f00006044820152606401610762565b888215610bd35760405163124d91e560e01b8152336004820152602481018a9052604481018990526001600160a01b0382169063124d91e590606401600060405180830381600087803b158015610bb657600080fd5b505af1158015610bca573d6000803e3d6000fd5b50505050610c38565b604051637921219560e11b81526001600160a01b0382169063f242432a90610c0590339030908e908e90600401613ca9565b600060405180830381600087803b158015610c1f57600080fd5b505af1158015610c33573d6000803e3d6000fd5b505050505b7f6f2f9c82f8808cf5cb4332789c02c0c95fad4f7586899cc1bc426f254debf1658a8a8a8a8a8a8a8a8a604051610c7799989796959493929190613d0a565b60405180910390a150505050505050505050565b6040516001600160601b0319606087901b16602082015260348101859052605481018490526074810183905281151560f81b6094820152600090609501610801565b6033546001600160a01b03163314610cf75760405162461bcd60e51b815260040161076290613c74565b610d016000611be6565b565b6000610d168b8b8b8b8b468c8c8c6112b0565b9050610d22888861174f565b610d2d8184846117f5565b610d3b8b8b8b898989611c38565b5050505050505050505050565b6000610d546001611db4565b90508015610d6c576000805461ff0019166101001790555b610d7784848461073b565b8015610dbd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6033546001600160a01b03163314610ded5760405162461bcd60e51b815260040161076290613c74565b60005b8181101561078657610e2a838383818110610e0d57610e0d613d6d565b9050602002016020810190610e22919061316b565b606690611e41565b5080610e3581613d99565b915050610df0565b428610610e985760405162461bcd60e51b815260206004820152602360248201527f4272696467653a20756e61626c6520746f20757064617465207369676e6572206044820152621e595d60ea1b6064820152608401610762565b42851015610ef85760405162461bcd60e51b815260206004820152602760248201527f4272696467653a20757064617465207369676e6572207369676e617475726520604482015266195e1c1a5c995960ca1b6064820152608401610762565b6000610f078888888888610c8b565b9050610f13818661174f565b610f1e8184846117f5565b8315610f8957610f2d88611e5d565b610f38606689611eaa565b610f845760405162461bcd60e51b815260206004820152601d60248201527f4272696467653a207369676e657220616c7265616479206578697374730000006044820152606401610762565b610fe0565b610f94606689611e41565b610fe05760405162461bcd60e51b815260206004820152601d60248201527f4272696467653a207369676e657220646f6573206e6f742065786973740000006044820152606401610762565b5050505050505050565b6001600160a01b03881661103c5760405162461bcd60e51b815260206004820152601960248201527822a9219b9918a430b7323632b91d103d32b937903a37b5b2b760391b6044820152606401610762565b8782156110a85760405163079cc67960e41b8152336004820152602481018990526001600160a01b038216906379cc679090604401600060405180830381600087803b15801561108b57600080fd5b505af115801561109f573d6000803e3d6000fd5b5050505061110f565b604051632142170760e11b8152336004820152306024820152604481018990526001600160a01b038216906342842e0e90606401600060405180830381600087803b1580156110f657600080fd5b505af115801561110a573d6000803e3d6000fd5b505050505b7f5a035a04c3f86dbf0cfe44e37374a1c7d8ad9d3b2542a39acaab6e3cb18e9738898989898989898960405161114c989796959493929190613db4565b60405180910390a1505050505050505050565b600034116111af5760405162461bcd60e51b815260206004820152601960248201527f4e617469766548616e646c65723a207a65726f2076616c7565000000000000006044820152606401610762565b7f618bd7f3201fe12a7051eb9e8f45ac82a6648b19a07a79c9189ac480546e68c13486868686866040516111e896959493929190613e10565b60405180910390a15050505050565b60006112088989898989468a611247565b9050611214868661174f565b61121f8184846117f5565b61122b89898987611ebf565b505050505050505050565b6060611242606661203f565b905090565b604080516001600160601b03196060998a1b811660208084019190915260348301999099529690981b90951660548801526068870193909352608886019190915260a8850152151560f81b60c8840152805180840360a901815260c99093019052815191012090565b60008989898989898989896040516020016112d399989796959493929190613e55565b6040516020818303038152906040528051906020012090509998505050505050505050565b600061130c8c8c8c8c8c8c468d8d8d611340565b9050611318888861174f565b6113238184846117f5565b6113328c8c8c8c8a8a8a61204c565b505050505050505050505050565b60008a8a8a8a8a8a8a8a8a8a6040516020016113659a99989796959493929190613eb7565b6040516020818303038152906040528051906020012090509a9950505050505050505050565b6001600160a01b0388166113dc5760405162461bcd60e51b815260206004820152601860248201527722a92199182430b7323632b91d103d32b937903a37b5b2b760411b6044820152606401610762565b6000871161142c5760405162461bcd60e51b815260206004820152601c60248201527f455243323048616e646c65723a20616d6f756e74206973207a65726f000000006044820152606401610762565b8782156114985760405163079cc67960e41b8152336004820152602481018990526001600160a01b038216906379cc679090604401600060405180830381600087803b15801561147b57600080fd5b505af115801561148f573d6000803e3d6000fd5b505050506114ad565b6114ad6001600160a01b03821633308b61221a565b7ffc11ca985085252b65dba84249af6977f9d4cb2acc79ee95fff01985d1b56275898989898989898960405161114c989796959493929190613db4565b6033546001600160a01b031633146115145760405162461bcd60e51b815260040161076290613c74565b600081116115645760405162461bcd60e51b815260206004820152601a60248201527f5369676e6572733a20696e76616c6964207468726573686f6c640000000000006044820152606401610762565b606555565b6033546001600160a01b031633146115935760405162461bcd60e51b815260040161076290613c74565b60005b81811015610786576115cd8383838181106115b3576115b3613d6d565b90506020020160208101906115c8919061316b565b611e5d565b6115ff8383838181106115e2576115e2613d6d565b90506020020160208101906115f7919061316b565b606690611eaa565b508061160a81613d99565b915050611596565b6033546001600160a01b0316331461163c5760405162461bcd60e51b815260040161076290613c74565b6001600160a01b0381166116a15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610762565b6108ff81611be6565b60006116bb8b8b8b8b8b468c611247565b905060006116fd868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250612285915050565b9050611709898961174f565b6117148185856117f5565b6113328c8c8c8a611ebf565b600054610100900460ff166117475760405162461bcd60e51b815260040161076290613b91565b610d016122f9565b60408051602080820185905281830184905282518083038401815260609092018352815191810191909120600081815260689092529190205460ff16156117d85760405162461bcd60e51b815260206004820152601e60248201527f4861736865733a207468652068617368206e6f6e6365206973207573656400006044820152606401610762565b6000908152606860205260409020805460ff191660011790555050565b6000816001600160401b0381111561180f5761180f612f99565b604051908082528060200260200182016040528015611838578160200160208202803683370190505b50905060005b828110156118ef576118b384848381811061185b5761185b613d6d565b905060200281019061186d9190613f20565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118ad92508991506123299050565b9061237c565b8282815181106118c5576118c5613d6d565b6001600160a01b0390921660209283029190910190910152806118e781613d99565b91505061183e565b50610dbd81612398565b600082116119495760405162461bcd60e51b815260206004820152601d60248201527f4e617469766548616e646c65723a20616d6f756e74206973207a65726f0000006044820152606401610762565b6001600160a01b03811661199f5760405162461bcd60e51b815260206004820152601f60248201527f4e617469766548616e646c65723a207265636569766572206973207a65726f006044820152606401610762565b6000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146119ec576040519150601f19603f3d011682016040523d82523d6000602084013e6119f1565b606091505b50509050806107865760405162461bcd60e51b815260206004820152601d60248201527f4e617469766548616e646c65723a2063616e27742073656e64206574680000006044820152606401610762565b6033546001600160a01b031633146108ff5760405162461bcd60e51b815260040161076290613c74565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a9f5761078683612510565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ad857600080fd5b505afa925050508015611b08575060408051601f3d908101601f19168201909252611b0591810190613f66565b60015b611b6b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610762565b6000805160206142078339815191528114611bda5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610762565b506107868383836125ac565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038616611c8a5760405162461bcd60e51b815260206004820152601960248201527822a9219b9918a430b7323632b91d103d32b937903a37b5b2b760391b6044820152606401610762565b6001600160a01b038416611ce05760405162461bcd60e51b815260206004820152601c60248201527f45524337323148616e646c65723a207a65726f207265636569766572000000006044820152606401610762565b858115611d5057604051639f6ed25f60e01b81526001600160a01b03821690639f6ed25f90611d199088908a9089908990600401613f7f565b600060405180830381600087803b158015611d3357600080fd5b505af1158015611d47573d6000803e3d6000fd5b505050506107bb565b604051632142170760e11b81523060048201526001600160a01b038681166024830152604482018890528216906342842e0e90606401600060405180830381600087803b158015611da057600080fd5b505af1158015610d3b573d6000803e3d6000fd5b60008054610100900460ff1615611dfb578160ff166001148015611dd75750303b155b611df35760405162461bcd60e51b815260040161076290613fa7565b506000919050565b60005460ff808416911610611e225760405162461bcd60e51b815260040161076290613fa7565b506000805460ff191660ff92909216919091179055600190565b919050565b6000611e56836001600160a01b0384166125d1565b9392505050565b6001600160a01b0381166108ff5760405162461bcd60e51b815260206004820152601460248201527329b4b3b732b9399d103d32b9379039b4b3b732b960611b6044820152606401610762565b6000611e56836001600160a01b0384166126c4565b6001600160a01b038416611f105760405162461bcd60e51b815260206004820152601860248201527722a92199182430b7323632b91d103d32b937903a37b5b2b760411b6044820152606401610762565b60008311611f605760405162461bcd60e51b815260206004820152601c60248201527f455243323048616e646c65723a20616d6f756e74206973207a65726f000000006044820152606401610762565b6001600160a01b038216611fb65760405162461bcd60e51b815260206004820152601b60248201527f455243323048616e646c65723a207a65726f20726563656976657200000000006044820152606401610762565b838115612024576040516308934a5f60e31b81526001600160a01b0384811660048301526024820186905282169063449a52f890604401600060405180830381600087803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b50505050612038565b6120386001600160a01b0382168486612713565b5050505050565b60606000611e5683612743565b6001600160a01b0387166120a25760405162461bcd60e51b815260206004820152601a60248201527f4552433131353548616e646c65723a207a65726f20746f6b656e0000000000006044820152606401610762565b6001600160a01b0384166120f85760405162461bcd60e51b815260206004820152601d60248201527f4552433131353548616e646c65723a207a65726f2072656365697665720000006044820152606401610762565b600085116121485760405162461bcd60e51b815260206004820152601e60248201527f4552433131353548616e646c65723a20616d6f756e74206973207a65726f00006044820152606401610762565b8681156121ba57604051633dbd5b2560e01b81526001600160a01b03821690633dbd5b25906121839088908b908b908a908a90600401613ff5565b600060405180830381600087803b15801561219d57600080fd5b505af11580156121b1573d6000803e3d6000fd5b50505050610fe0565b604051637921219560e11b81526001600160a01b0382169063f242432a906121ec90309089908c908c90600401613ca9565b600060405180830381600087803b15801561220657600080fd5b505af1158015611332573d6000803e3d6000fd5b6040516001600160a01b0380851660248301528316604482015260648101829052610dbd9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261279f565b600081815b84518110156122f15760008582815181106122a7576122a7613d6d565b602002602001015190508083116122cd57600083815260208290526040902092506122de565b600081815260208490526040902092505b50806122e981613d99565b91505061228a565b509392505050565b600054610100900460ff166123205760405162461bcd60e51b815260040161076290613b91565b610d0133611be6565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b600080600061238b8585612871565b915091506122f1816128e1565b6000805b82518110156124bc576123d28382815181106123ba576123ba613d6d565b60200260200101516066612a9c90919063ffffffff16565b61241e5760405162461bcd60e51b815260206004820152601760248201527f5369676e6572733a20696e76616c6964207369676e65720000000000000000006044820152606401610762565b6000609884838151811061243457612434613d6d565b60200260200101516001600160a01b0316901c60026124539190614107565b9050828116156124a55760405162461bcd60e51b815260206004820152601a60248201527f5369676e6572733a206475706c6963617465207369676e6572730000000000006044820152606401610762565b9190911790806124b481613d99565b91505061239c565b50606554825110156109cf5760405162461bcd60e51b815260206004820152601d60248201527f5369676e6572733a207468726573686f6c64206973206e6f74206d65740000006044820152606401610762565b6001600160a01b0381163b61257d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610762565b60008051602061420783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6125b583612abe565b6000825111806125c25750805b1561078657610dbd8383612afe565b600081815260018301602052604081205480156126ba5760006125f5600183614113565b855490915060009061260990600190614113565b905081811461266e57600086600001828154811061262957612629613d6d565b906000526020600020015490508087600001848154811061264c5761264c613d6d565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061267f5761267f61412a565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106e6565b60009150506106e6565b600081815260018301602052604081205461270b575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106e6565b5060006106e6565b6040516001600160a01b03831660248201526044810182905261078690849063a9059cbb60e01b9060640161224e565b60608160000180548060200260200160405190810160405280929190818152602001828054801561279357602002820191906000526020600020905b81548152602001906001019080831161277f575b50505050509050919050565b60006127f4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612b239092919063ffffffff16565b80519091501561078657808060200190518101906128129190614140565b6107865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610762565b6000808251604114156128a85760208301516040840151606085015160001a61289c87828585612b3a565b945094505050506128da565b8251604014156128d257602083015160408401516128c7868383612c27565b9350935050506128da565b506000905060025b9250929050565b60008160048111156128f5576128f561415d565b14156128fe5750565b60018160048111156129125761291261415d565b14156129605760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610762565b60028160048111156129745761297461415d565b14156129c25760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610762565b60038160048111156129d6576129d661415d565b1415612a2f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610762565b6004816004811115612a4357612a4361415d565b14156108ff5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610762565b6001600160a01b03811660009081526001830160205260408120541515611e56565b612ac781612510565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611e56838360405180606001604052806027815260200161422760279139612c60565b6060612b328484600085612d3d565b949350505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612b715750600090506003612c1e565b8460ff16601b14158015612b8957508460ff16601c14155b15612b9a5750600090506004612c1e565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612bee573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c1757600060019250925050612c1e565b9150600090505b94509492505050565b6000806001600160ff1b03831681612c4460ff86901c601b614173565b9050612c5287828885612b3a565b935093505050935093915050565b60606001600160a01b0384163b612cc85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610762565b600080856001600160a01b031685604051612ce391906141b7565b600060405180830381855af49150503d8060008114612d1e576040519150601f19603f3d011682016040523d82523d6000602084013e612d23565b606091505b5091509150612d33828286612e6e565b9695505050505050565b606082471015612d9e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610762565b6001600160a01b0385163b612df55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610762565b600080866001600160a01b03168587604051612e1191906141b7565b60006040518083038185875af1925050503d8060008114612e4e576040519150601f19603f3d011682016040523d82523d6000602084013e612e53565b606091505b5091509150612e63828286612e6e565b979650505050505050565b60608315612e7d575081611e56565b825115612e8d5782518084602001fd5b8160405162461bcd60e51b815260040161076291906141d3565b600060208284031215612eb957600080fd5b81356001600160e01b031981168114611e5657600080fd5b60008060408385031215612ee457600080fd5b50508035926020909101359150565b60008083601f840112612f0557600080fd5b5081356001600160401b03811115612f1c57600080fd5b6020830191508360208260051b85010111156128da57600080fd5b600080600060408486031215612f4c57600080fd5b83356001600160401b03811115612f6257600080fd5b612f6e86828701612ef3565b909790965060209590950135949350505050565b80356001600160a01b0381168114611e3c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612fd757612fd7612f99565b604052919050565b600082601f830112612ff057600080fd5b81356001600160401b0381111561300957613009612f99565b61301c601f8201601f1916602001612faf565b81815284602083860101111561303157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561306457600080fd5b61306d85612f82565b935061307b60208601612f82565b92506040850135915060608501356001600160401b0381111561309d57600080fd5b6130a987828801612fdf565b91505092959194509250565b60008060008060008060a087890312156130ce57600080fd5b863595506130de60208801612f82565b9450604087013593506060870135925060808701356001600160401b0381111561310757600080fd5b61311389828a01612ef3565b979a9699509497509295939492505050565b600080600080600060a0868803121561313d57600080fd5b8535945061314d60208701612f82565b94979496505050506040830135926060810135926080909101359150565b60006020828403121561317d57600080fd5b611e5682612f82565b6000806040838503121561319957600080fd5b6131a283612f82565b915060208301356001600160401b038111156131bd57600080fd5b6131c985828601612fdf565b9150509250929050565b60008083601f8401126131e557600080fd5b5081356001600160401b038111156131fc57600080fd5b6020830191508360208285010111156128da57600080fd5b80151581146108ff57600080fd5b803561ffff81168114611e3c57600080fd5b600080600080600080600080600060e08a8c03121561325257600080fd5b61325b8a612f82565b985060208a0135975060408a0135965060608a01356001600160401b038082111561328557600080fd5b6132918d838e016131d3565b909850965060808c01359150808211156132aa57600080fd5b506132b78c828d016131d3565b90955093505060a08a01356132cb81613214565b91506132d960c08b01613222565b90509295985092959850929598565b600080600080600060a0868803121561330057600080fd5b61330986612f82565b9450602086013593506040860135925060608601359150608086013561332e81613214565b809150509295509295909350565b6000806000806000806000806000806101008b8d03121561335c57600080fd5b6133658b612f82565b995060208b0135985061337a60408c01612f82565b975060608b0135965060808b0135955060a08b01356001600160401b03808211156133a457600080fd5b6133b08e838f016131d3565b909750955060c08d013591506133c582613214565b90935060e08c013590808211156133db57600080fd5b506133e88d828e01612ef3565b915080935050809150509295989b9194979a5092959850565b6000806020838503121561341457600080fd5b82356001600160401b0381111561342a57600080fd5b61343685828601612ef3565b90969095509350505050565b600080600080600080600060c0888a03121561345d57600080fd5b61346688612f82565b9650602088013595506040880135945060608801359350608088013561348b81613214565b925060a08801356001600160401b038111156134a657600080fd5b6134b28a828b01612ef3565b989b979a50959850939692959293505050565b60008060008060008060008060c0898b0312156134e157600080fd5b6134ea89612f82565b97506020890135965060408901356001600160401b038082111561350d57600080fd5b6135198c838d016131d3565b909850965060608b013591508082111561353257600080fd5b5061353f8b828c016131d3565b909550935050608089013561355381613214565b915061356160a08a01613222565b90509295985092959890939650565b60008060008060006060868803121561358857600080fd5b85356001600160401b038082111561359f57600080fd5b6135ab89838a016131d3565b909750955060208801359150808211156135c457600080fd5b506135d1888289016131d3565b90945092506135e4905060408701613222565b90509295509295909350565b60008060008060008060008060e0898b03121561360c57600080fd5b61361589612f82565b97506020890135965061362a60408a01612f82565b9550606089013594506080890135935060a089013561364881613214565b925060c08901356001600160401b0381111561366357600080fd5b61366f8b828c01612ef3565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b818110156136c45783516001600160a01b03168352928401929184019160010161369f565b50909695505050505050565b600080600080600080600060e0888a0312156136eb57600080fd5b6136f488612f82565b96506020880135955061370960408901612f82565b9450606088013593506080880135925060a0880135915060c088013561372e81613214565b8091505092959891949750929550565b60006020828403121561375057600080fd5b5035919050565b60008060008060008060008060006101008a8c03121561377657600080fd5b61377f8a612f82565b985060208a0135975061379460408b01612f82565b965060608a0135955060808a0135945060a08a0135935060c08a01356001600160401b038111156137c457600080fd5b6137d08c828d016131d3565b90945092505060e08a01356137e481613214565b809150509295985092959850929598565b60008060008060008060008060008060006101208c8e03121561381757600080fd5b6138208c612f82565b9a5060208c0135995060408c0135985061383c60608d01612f82565b975060808c0135965060a08c013595506001600160401b038060c08e0135111561386557600080fd5b6138758e60c08f01358f016131d3565b909650945061388760e08e0135613214565b60e08d01359350806101008e013511156138a057600080fd5b506138b28d6101008e01358e01612ef3565b81935080925050509295989b509295989b9093969950565b6000806000806000806000806000806101208b8d0312156138ea57600080fd5b6138f38b612f82565b995060208b0135985060408b0135975061390f60608c01612f82565b965060808b0135955060a08b0135945060c08b0135935060e08b01356001600160401b0381111561393f57600080fd5b61394b8d828e016131d3565b9094509250506101008b013561396081613214565b809150509295989b9194979a5092959850565b600082601f83011261398457600080fd5b813560206001600160401b0382111561399f5761399f612f99565b8160051b6139ae828201612faf565b92835284810182019282810190878511156139c857600080fd5b83870192505b84831015612e63578235825291830191908301906139ce565b600080600080600060a086880312156139ff57600080fd5b613a0886612f82565b9450613a1660208701612f82565b935060408601356001600160401b0380821115613a3257600080fd5b613a3e89838a01613973565b94506060880135915080821115613a5457600080fd5b613a6089838a01613973565b93506080880135915080821115613a7657600080fd5b50613a8388828901612fdf565b9150509295509295909350565b600080600080600060a08688031215613aa857600080fd5b613ab186612f82565b9450613abf60208701612f82565b9350604086013592506060860135915060808601356001600160401b03811115613ae857600080fd5b613a8388828901612fdf565b6000806000806000806000806000806101008b8d031215613b1457600080fd5b613b1d8b612f82565b995060208b01359850613b3260408c01612f82565b975060608b0135965060808b0135955060a08b0135613b5081613214565b945060c08b01356001600160401b0380821115613b6c57600080fd5b613b788e838f01612ef3565b909650945060e08d01359150808211156133db57600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038a16815288602082015287604082015260e060608201526000613d3860e08301888a613ce1565b8281036080840152613d4b818789613ce1565b94151560a0840152505061ffff9190911660c090910152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415613dad57613dad613d83565b5060010190565b60018060a01b038916815287602082015260c060408201526000613ddc60c08301888a613ce1565b8281036060840152613def818789613ce1565b9415156080840152505061ffff9190911660a0909101529695505050505050565b868152608060208201526000613e2a608083018789613ce1565b8281036040840152613e3d818688613ce1565b91505061ffff83166060830152979650505050505050565b60006bffffffffffffffffffffffff19808c60601b1683528a6014840152808a60601b16603484015250876048830152866068830152856088830152838560a88401375090151560f81b910160a881019190915260a901979650505050505050565b60006bffffffffffffffffffffffff19808d60601b1683528b60148401528a6034840152808a60601b166054840152508760688301528660888301528560a8830152838560c88401375090151560f81b910160c881019190915260c90198975050505050505050565b6000808335601e19843603018112613f3757600080fd5b8301803591506001600160401b03821115613f5157600080fd5b6020019150368190038213156128da57600080fd5b600060208284031215613f7857600080fd5b5051919050565b60018060a01b0385168152836020820152606060408201526000612d33606083018486613ce1565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60018060a01b0386168152846020820152836040820152608060608201526000612e63608083018486613ce1565b600181815b8085111561405e57816000190482111561404457614044613d83565b8085161561405157918102915b93841c9390800290614028565b509250929050565b600082614075575060016106e6565b81614082575060006106e6565b816001811461409857600281146140a2576140be565b60019150506106e6565b60ff8411156140b3576140b3613d83565b50506001821b6106e6565b5060208310610133831016604e8410600b84101617156140e1575081810a6106e6565b6140eb8383614023565b80600019048211156140ff576140ff613d83565b029392505050565b6000611e568383614066565b60008282101561412557614125613d83565b500390565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561415257600080fd5b8151611e5681613214565b634e487b7160e01b600052602160045260246000fd5b6000821982111561418657614186613d83565b500190565b60005b838110156141a657818101518382015260200161418e565b83811115610dbd5750506000910152565b600082516141c981846020870161418b565b9190910192915050565b60208152600082518060208401526141f281604085016020870161418b565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f3e1a9a931834ef3300452b84bce3d4bb29f7e74dea7f192ef087263b7eb537864736f6c63430008090033"