niftyswap
Version:
AMM exchange for ERC-1155 tokens, inspired by Uniswap
670 lines • 83.3 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "MetaERC20Wrapper",
"sourceName": "erc20-meta-token/contracts/wrapper/MetaERC20Wrapper.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "_approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "signer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newNonce",
"type": "uint256"
}
],
"name": "NonceChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "token_address",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "token_id",
"type": "uint256"
}
],
"name": "TokenRegistration",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "_ids",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "_amounts",
"type": "uint256[]"
}
],
"name": "TransferBatch",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "TransferSingle",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_owners",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "_ids",
"type": "uint256[]"
}
],
"name": "balanceOfBatch",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "address",
"name": "_recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "deposit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
}
],
"name": "getIdAddress",
"outputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getNTokens",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_signer",
"type": "address"
}
],
"name": "getNonce",
"outputs": [
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
}
],
"name": "getTokenID",
"outputs": [
{
"internalType": "uint256",
"name": "tokenID",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "isOperator",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_signerAddress",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_sig",
"type": "bytes"
}
],
"name": "isValidSignature",
"outputs": [
{
"internalType": "bool",
"name": "isValid",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "_ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_amounts",
"type": "uint256[]"
},
{
"internalType": "bool",
"name": "_isGasFee",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "metaSafeBatchTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "_isGasFee",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "metaSafeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"internalType": "bool",
"name": "_approved",
"type": "bool"
},
{
"internalType": "bool",
"name": "_isGasFee",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "metaSetApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address payable",
"name": "_from",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "_ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_values",
"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 payable",
"name": "_from",
"type": "address"
},
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "_ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_amounts",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "safeBatchTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"internalType": "bool",
"name": "_approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceID",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "address payable",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x6080604052600160035534801561001557600080fd5b50600160008190527fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0581905560056020527f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b80546001600160a01b031916909117905561431a806100876000396000f3fe6080604052600436106101475760003560e01c8063a22cb465116100c0578063e985e9c511610074578063f242432a11610059578063f242432a14610391578063f5d4c820146103b1578063fa4e12d7146103d15761015a565b8063e985e9c514610351578063f23a6e61146103715761015a565b8063bc197c81116100a5578063bc197c81146102e4578063ce0b514b14610311578063d9caed12146103315761015a565b8063a22cb465146102a4578063a3d4926e146102c45761015a565b80634e1273f4116101175780637358e9a5116100fc5780637358e9a51461024f5780638340f5491461027c5780639040a9491461028f5761015a565b80634e1273f41461020257806363f8071c1461022f5761015a565b8062fdd58e1461015f57806301ffc9a7146101955780632d0335ab146101c25780632eb2c2d6146101e25761015a565b3661015a57610158600133346103f1565b005b600080fd5b34801561016b57600080fd5b5061017f61017a366004613478565b6106c4565b60405161018c9190613edc565b60405180910390f35b3480156101a157600080fd5b506101b56101b0366004613582565b6106f7565b60405161018c9190613831565b3480156101ce57600080fd5b5061017f6101dd366004612fc5565b6107de565b3480156101ee57600080fd5b506101586101fd366004613270565b610806565b34801561020e57600080fd5b5061022261021d3660046134a3565b610911565b60405161018c91906137ed565b34801561023b57600080fd5b5061017f61024a366004612fc5565b610a5d565b34801561025b57600080fd5b5061026f61026a366004613681565b610aba565b60405161018c9190613730565b61015861028a36600461332b565b6103f1565b34801561029b57600080fd5b5061017f610b16565b3480156102b057600080fd5b506101586102bf3660046133ce565b610b1c565b3480156102d057600080fd5b506101586102df3660046131b3565b610bb5565b3480156102f057600080fd5b506103046102ff366004613062565b610d29565b60405161018c91906138b9565b34801561031d57600080fd5b5061015861032c36600461333f565b610df3565b34801561033d57600080fd5b5061015861034c36600461310c565b610ed2565b34801561035d57600080fd5b506101b561036c36600461302a565b610eeb565b34801561037d57600080fd5b5061030461038c36600461314c565b610f26565b34801561039d57600080fd5b506101586103ac3660046133b7565b610fa2565b3480156103bd57600080fd5b506101586103cc3660046132be565b6110a6565b3480156103dd57600080fd5b506101b56103ec3660046133fb565b6111d6565b73ffffffffffffffffffffffffffffffffffffffff8216610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613943565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff841660011461066657341561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906139fd565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906104f590339030908790600401613751565b602060405180830381600087803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105479190613566565b506105506119b7565b610586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613a5a565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260409020548061065c576003805460010190819055600081815260056020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b169081179091558352600490915290819020829055519092507ff977d54986414fc91816901629d1d788ad95448ab4198dcb9b6dc5ed2b930c1f9061064f9087908590613782565b60405180910390a1610660565b8091505b506106a3565b34821461069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906138e6565b5060015b6106be838284604051806020016040528060008152506119eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061078a57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000145b806107d657507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b90505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b3373ffffffffffffffffffffffffffffffffffffffff8616148061082f575061082f8533610eeb565b610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806141be602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166108f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061412f6030913960400191505060405180910390fd5b6108fc85858585611aa0565b61090a858585855a86611df4565b5050505050565b6060815183511461096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061415f602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561098757600080fd5b506040519080825280602002602001820160405280156109b1578160200160208202803683370190505b50905060005b8451811015610a55576000808683815181106109cf57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858381518110610a1f57fe5b6020026020010151815260200190815260200160002054828281518110610a4257fe5b60209081029190910101526001016109b7565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020526040902054806107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613dc5565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16806107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613c51565b60035490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff8516610c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d0b565b6060610c0c612df6565b6060610cbf89857fa3d4926e8cf8fe8e020cd29f514c256bc2eec62aa2337e415f1a33a4828af5a060001b8c8c8c604051602001610c4a9190613699565b604051602081830303815290604052805190602001208c604051602001610c719190613699565b604051602081830303815290604052805190602001208c610c93576000610c96565b60015b604051602001610cab9695949392919061383c565b604051602081830303815290604052612061565b9050610ccd89898989611aa0565b8415610d105780806020019051810190610ce7919061364c565b8094508193505050610d0189898989866020015188611df4565b610d0b8983612230565b610d1e565b610d1e898989895a86611df4565b505050505050505050565b6000333014610d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613b71565b60005b8451811015610dc757610d8c858281518110610d7f57fe5b6020026020010151610aba565b50610dbf3087878481518110610d9e57fe5b6020026020010151878581518110610db257fe5b60200260200101516124d9565b600101610d67565b507fbc197c81000000000000000000000000000000000000000000000000000000009695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610e40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613ab7565b6060610e4a612df6565b6060610e8289857fce0b514b3931bdbe4d5d44e4f035afe7113767b7db71949271f6a62d9c60f558828c8c8c8c610c93576000610c96565b9050610e90898989896126da565b8415610ec45780806020019051810190610eaa919061364c565b8094508193505050610d01898989898660200151886127dd565b610d1e898989895a866127dd565b6000610edd84610a5d565b90506106be338483856124d9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6000333014610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906139a0565b610f6a84610aba565b50610f77308686866124d9565b507ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3373ffffffffffffffffffffffffffffffffffffffff86161480610fcb5750610fcb8533610eeb565b611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614029602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613fc7602b913960400191505060405180910390fd5b611098858585856126da565b61090a858585855a866127dd565b606061110286837ff5d4c820494c8595de274c7ff619bead38aac4fbc3d143b5bf956aa4b84fa5248289896110dc5760006110df565b60015b896110eb5760006110ee565b60015b604051602001610cab95949392919061387d565b73ffffffffffffffffffffffffffffffffffffffff8781166000818152600160209081526040808320948b16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168915151790555192935090917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190611196908890613831565b60405180910390a382156111ce576111ac612df6565b818060200190518101906111c09190613619565b90506111cc8782612230565b505b505050505050565b600080825111611231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806141ed6043913960600191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851661129d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018061418b6033913960400191505060405180910390fd5b60006112a8836129ce565b60f81c905060058110611306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614088603a913960400191505060405180910390fd5b60008160ff16600581111561131757fe5b905060008080808085600581111561132b57fe5b1415611382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806140c26036913960400191505060405180910390fd5b600185600581111561139057fe5b14156114d35787516061146113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806140f86037913960400191505060405180910390fd5b6113fb886000612a8b565b9250611408886020612a8b565b91508760408151811061141757fe5b602001015160f81c60f81b60f81c935060018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611481573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8d811691161497506119af9650505050505050565b60028560058111156114e157fe5b1415611631578751606114611541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806140f86037913960400191505060405180910390fd5b61154c886000612a8b565b9250611559886020612a8b565b91508760408151811061156857fe5b01602090810151604080517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081850152603c8082018f905282518083039091018152605c82018084528151918601919091206000909152607c82018084525260f89290921c609c830181905260bc830187905260dc8301869052905190965060019260fc8084019391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611481573d6000803e3d6000fd5b600385600581111561163f57fe5b14156117f757604080517f20c13b0b000000000000000000000000000000000000000000000000000000008152600481019182528a5160448201528a5173ffffffffffffffffffffffffffffffffffffffff8e16926320c13b0b928d928d92918291602482019160640190602087019080838360005b838110156116cd5781810151838201526020016116b5565b50505050905090810190601f1680156116fa5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561172d578181015183820152602001611715565b50505050905090810190601f16801561175a5780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561177957600080fd5b505afa15801561178d573d6000803e3d6000fd5b505050506040513d60208110156117a357600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f20c13b0b000000000000000000000000000000000000000000000000000000001496506119af95505050505050565b600485600581111561180557fe5b141561195e57604080517f1626ba7e000000000000000000000000000000000000000000000000000000008152600481018c8152602482019283528a5160448301528a5173ffffffffffffffffffffffffffffffffffffffff8f1693631626ba7e938f938e9390929160640190602085019080838360005b8381101561189557818101518382015260200161187d565b50505050905090810190601f1680156118c25780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b1580156118e057600080fd5b505afa1580156118f4573d6000803e3d6000fd5b505050506040513d602081101561190a57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e000000000000000000000000000000000000000000000000000000001496506119af95505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614088603a913960400191505060405180910390fd5b949350505050565b6000803d80156119ce57602081146119d7576119e3565b600191506119e3565b60206000803e60005191505b501515905090565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320868452909152902054611a249083612af3565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260208181526040808320888452825280832094909455835187815290810186905283519293919233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62928290030190a46106be60008585855a866127dd565b8051825114611afa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806140536035913960400191505060405180910390fd5b815160005b81811015611cec57611b8f838281518110611b1657fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110611b6a57fe5b6020026020010151815260200190815260200160002054612b6e90919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611bdb57fe5b6020026020010151815260200190815260200160002081905550611c7d838281518110611c0457fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110611c5857fe5b6020026020010151815260200190815260200160002054612af390919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611cc957fe5b602090810291909101810151825281019190915260400160002055600101611aff565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611d99578181015183820152602001611d81565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611dd8578181015183820152602001611dc0565b5050505090500194505050505060405180910390a45050505050565b611e138573ffffffffffffffffffffffffffffffffffffffff16612be5565b156111ce5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611ecb578181015183820152602001611eb3565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611f0a578181015183820152602001611ef2565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611f46578181015183820152602001611f2e565b50505050905090810190601f168015611f735780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015611f9857600080fd5b5087f1158015611fac573d6000803e3d6000fd5b50505050506040513d6020811015611fc357600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180614230603f913960400191505060405180910390fd5b6060808380602001905181019061207891906135c2565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040812054919450919250906120b0836041612a8b565b90508181108015906120c457508160640181105b6120fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613e22565b60006121368683878051906020012060405160200161211b939291906136cf565b60405160208183030381529060405280519060200120612c1c565b9050606086838760405160200161214f939291906136f6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825273ffffffffffffffffffffffffffffffffffffffff8c166000818152600260205292909220600187019081905590935090917fb861b7bdbe611a846ab271b8d2810391bc8b5a968f390c322438ecab66bccf59916121da91613edc565b60405180910390a26121ee898383886111d6565b612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613b14565b50505050509392505050565b600061223f82606001516129ce565b60f81c90506002811061227e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613e7f565b60008160ff16600281111561228f57fe5b835160408501519192506000918291829173ffffffffffffffffffffffffffffffffffffffff16156122c55786604001516122c7565b335b925060008560028111156122d757fe5b14156123d65786606001518060200190518101906122f59190612ffd565b909450915073ffffffffffffffffffffffffffffffffffffffff841630141561234657612324888484846126da565b6123418884845a85604051806020016040528060008152506127dd565b6123d1565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f242432a9061239e908b908790879087906004016137a8565b600060405180830381600087803b1580156123b857600080fd5b505af11580156123cc573d6000803e3d6000fd5b505050505b6124cf565b86606001518060200190518101906123ee9190612fe1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290945073ffffffffffffffffffffffffffffffffffffffff8516906323b872dd90612447908b9087908690600401613751565b602060405180830381600087803b15801561246157600080fd5b505af1158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190613566565b6124cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613cae565b5050505050505050565b6124e4848383612d4b565b600182146125ea57600082815260056020526040908190205490517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690819063a9059cbb906125539087908690600401613782565b602060405180830381600087803b15801561256d57600080fd5b505af1158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a59190613566565b506125ae6119b7565b6125e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d68565b506106be565b73ffffffffffffffffffffffffffffffffffffffff8316612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613bf4565b60008373ffffffffffffffffffffffffffffffffffffffff168260405161265d9061372d565b60006040518083038185875af1925050503d806000811461269a576040519150601f19603f3d011682016040523d82523d6000602084013e61269f565b606091505b505090508061090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d68565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546127139082612b6e565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260208181526040808320878452825280832094909455918616815280825282812085825290915220546127639082612af3565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6127fc8573ffffffffffffffffffffffffffffffffffffffff16612be5565b156111ce5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156128b557818101518382015260200161289d565b50505050905090810190601f1680156128e25780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561290557600080fd5b5087f1158015612919573d6000803e3d6000fd5b50505050506040513d602081101561293057600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061426f603a913960400191505060405180910390fd5b600080825111612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180613ff26037913960400191505060405180910390fd5b81600183510381518110612a3957fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507fff000000000000000000000000000000000000000000000000000000000000001690565b60008160200183511015612aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806142a9603c913960400191505060405180910390fd5b50016020015190565b600082820183811015612b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b600082821115612bdf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000813f8015801590612b6757507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b604080518082018252600281527f1901000000000000000000000000000000000000000000000000000000000000602080830191825283517f035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d47498183015230818601528451808203860181526060820190955284519490910193909320825160009491928692608001918291908083835b60208310612ce957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612cac565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209392505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208181526040808320858452909152902054612d849082612b6e565b73ffffffffffffffffffffffffffffffffffffffff841660008181526020818152604080832087845282528083209490945583518681529081018590528351919333927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4505050565b60405180608001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600082601f830112612e44578081fd5b8135612e57612e5282613f09565b613ee5565b818152915060208083019084810181840286018201871015612e7857600080fd5b60005b84811015612e9757813584529282019290820190600101612e7b565b505050505092915050565b600082601f830112612eb2578081fd5b8135612ec0612e5282613f27565b9150808252836020828501011115612ed757600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612f00578081fd5b8151612f0e612e5282613f27565b9150808252836020828501011115612f2557600080fd5b612f36816020840160208601613f67565b5092915050565b600060808284031215612f4e578081fd5b6040516080810167ffffffffffffffff8282108183111715612f6c57fe5b81604052829350845183526020850151602084015260408501519150612f9182613f93565b8160408401526060850151915080821115612fab57600080fd5b50612fb885828601612ef0565b6060830152505092915050565b600060208284031215612fd6578081fd5b8135612b6781613f93565b600060208284031215612ff2578081fd5b8151612b6781613f93565b6000806040838503121561300f578081fd5b825161301a81613f93565b6020939093015192949293505050565b6000806040838503121561303c578182fd5b823561304781613f93565b9150602083013561305781613f93565b809150509250929050565b600080600080600060a08688031215613079578081fd5b853561308481613f93565b9450602086013561309481613f93565b9350604086013567ffffffffffffffff808211156130b0578283fd5b6130bc89838a01612e34565b945060608801359150808211156130d1578283fd5b6130dd89838a01612e34565b935060808801359150808211156130f2578283fd5b506130ff88828901612ea2565b9150509295509295909350565b600080600060608486031215613120578283fd5b833561312b81613f93565b9250602084013561313b81613f93565b929592945050506040919091013590565b600080600080600060a08688031215613163578081fd5b853561316e81613f93565b9450602086013561317e81613f93565b93506040860135925060608601359150608086013567ffffffffffffffff8111156131a7578182fd5b6130ff88828901612ea2565b60008060008060008060c087890312156131cb578384fd5b86356131d681613f93565b955060208701356131e681613f93565b9450604087013567ffffffffffffffff80821115613202578586fd5b61320e8a838b01612e34565b95506060890135915080821115613223578283fd5b61322f8a838b01612e34565b94506080890135915061324182613fb8565b90925060a08801359080821115613256578283fd5b5061326389828a01612ea2565b9150509295509295509295565b600080600080600060a08688031215613287578283fd5b853561329281613f93565b945060208601356132a281613f93565b9350604086013567ffffffffffffffff808211156130b0578485fd5b600080600080600060a086880312156132d5578283fd5b85356132e081613f93565b945060208601356132f081613f93565b9350604086013561330081613fb8565b9250606086013561331081613fb8565b9150608086013567ffffffffffffffff8111156131a7578182fd5b600080600060608486031215613120578081fd5b60008060008060008060c08789031215613357578384fd5b863561336281613f93565b9550602087013561337281613f93565b94506040870135935060608701359250608087013561339081613fb8565b915060a087013567ffffffffffffffff8111156133ab578182fd5b61326389828a01612ea2565b600080600080600060a08688031215613163578283fd5b600080604083850312156133e0578182fd5b82356133eb81613f93565b9150602083013561305781613fb8565b60008060008060808587031215613410578182fd5b843561341b81613f93565b935060208501359250604085013567ffffffffffffffff8082111561343e578384fd5b61344a88838901612ea2565b9350606087013591508082111561345f578283fd5b5061346c87828801612ea2565b91505092959194509250565b6000806040838503121561348a578182fd5b823561349581613f93565b946020939093013593505050565b600080604083850312156134b5578182fd5b823567ffffffffffffffff808211156134cc578384fd5b818501915085601f8301126134df578384fd5b81356134ed612e5282613f09565b80828252602080830192508086018a82838702890101111561350d578889fd5b8896505b8487101561353857803561352481613f93565b845260019690960195928101928101613511565b50909650870135935050508082111561354f578283fd5b5061355c85828601612e34565b9150509250929050565b600060208284031215613577578081fd5b8151612b6781613fb8565b600060208284031215613593578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612b67578182fd5b600080604083850312156135d4578182fd5b825167ffffffffffffffff808211156135eb578384fd5b6135f786838701612ef0565b9350602085015191508082111561360c578283fd5b5061355c85828601612ef0565b60006020828403121561362a578081fd5b815167ffffffffffffffff811115613640578182fd5b6119af84828501612f3d565b6000806040838503121561365e578182fd5b825167ffffffffffffffff80821115613675578384fd5b6135f786838701612f3d565b600060208284031215613692578081fd5b5035919050565b815160009082906020808601845b838110156136c3578151855293820193908201906001016136a7565b50929695505050505050565b600084516136e1818460208901613f67565b91909101928352506020820152604001919050565b60008451613708818460208901613f67565b82018481528351613720816020808501908801613f67565b0160200195945050505050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6020808252825182820181905260009190848201906040850190845b8181101561382557835183529284019291840191600101613809565b50909695505050505050565b901515815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b94855273ffffffffffffffffffffffffffffffffffffffff93841660208601529190921660408401526060830191909152608082015260a00190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252602d908201527f4d657461455243323057726170706572236465706f7369743a20494e434f525260408201527f4543545f4d53475f56414c554500000000000000000000000000000000000000606082015260800190565b6020808252602b908201527f4d657461455243323057726170706572236465706f7369743a20494e56414c4960408201527f445f524543495049454e54000000000000000000000000000000000000000000606082015260800190565b6020808252603c908201527f4d657461455243323057726170706572236f6e4552433131353552656365697660408201527f65643a20494e56414c49445f455243313135355f524543454956454400000000606082015260800190565b6020808252602c908201527f4d657461455243323057726170706572236465706f7369743a204e4f4e5f4e5560408201527f4c4c5f4d53475f56414c55450000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d657461455243323057726170706572236465706f7369743a205452414e534660408201527f45525f4641494c45440000000000000000000000000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461236d657461536166655472616e7366657246726f6d60408201527f3a20494e56414c49445f524543495049454e5400000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f5349474e415455524500000000000000000000000000606082015260800190565b60208082526041908201527f4d657461455243323057726170706572236f6e4552433131353542617463685260408201527f656365697665643a20494e56414c49445f455243313135355f5245434549564560608201527f4400000000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602c908201527f4d6574614552433230577261707065722377697468647261773a20494e56414c60408201527f49445f524543495049454e540000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f4d657461455243323057726170706572236765744964416464726573733a205560408201527f4e524547495354455245445f544f4b454e000000000000000000000000000000606082015260800190565b60208082526032908201527f455243313135354d657461235f7472616e736665724761734665653a2045524360408201527f32305f5452414e534645525f4641494c45440000000000000000000000000000606082015260800190565b60208082526038908201527f455243313135354d657461236d6574615361666542617463685472616e73666560408201527f7246726f6d3a20494e56414c49445f524543495049454e540000000000000000606082015260800190565b6020808252602a908201527f4d6574614552433230577261707065722377697468647261773a205452414e5360408201527f4645525f4641494c454400000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4d65746145524332305772617070657223676574546f6b656e49443a20554e5260408201527f4547495354455245445f544f4b454e0000000000000000000000000000000000606082015260800190565b6020808252602f908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f4e4f4e43450000000000000000000000000000000000606082015260800190565b6020808252602e908201527f455243313135354d657461235f7472616e736665724761734665653a20554e5360408201527f5550504f525445445f544f4b454e000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715613f0157fe5b604052919050565b600067ffffffffffffffff821115613f1d57fe5b5060209081020190565b600067ffffffffffffffff821115613f3b57fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015613f82578181015183820152602001613f6a565b838111156106be5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114613fb557600080fd5b50565b8015158114613fb557600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f52455155495245444552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f524551554952454445524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e455245524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f525369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f524551554952454445524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d4553534147454c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544a264697066735822122044cddb091b71cd6a1f7302a3257892b47a563a3ef597c504d327af7d9ad101ff64736f6c63430007040033",
"deployedBytecode": "0x6080604052600436106101475760003560e01c8063a22cb465116100c0578063e985e9c511610074578063f242432a11610059578063f242432a14610391578063f5d4c820146103b1578063fa4e12d7146103d15761015a565b8063e985e9c514610351578063f23a6e61146103715761015a565b8063bc197c81116100a5578063bc197c81146102e4578063ce0b514b14610311578063d9caed12146103315761015a565b8063a22cb465146102a4578063a3d4926e146102c45761015a565b80634e1273f4116101175780637358e9a5116100fc5780637358e9a51461024f5780638340f5491461027c5780639040a9491461028f5761015a565b80634e1273f41461020257806363f8071c1461022f5761015a565b8062fdd58e1461015f57806301ffc9a7146101955780632d0335ab146101c25780632eb2c2d6146101e25761015a565b3661015a57610158600133346103f1565b005b600080fd5b34801561016b57600080fd5b5061017f61017a366004613478565b6106c4565b60405161018c9190613edc565b60405180910390f35b3480156101a157600080fd5b506101b56101b0366004613582565b6106f7565b60405161018c9190613831565b3480156101ce57600080fd5b5061017f6101dd366004612fc5565b6107de565b3480156101ee57600080fd5b506101586101fd366004613270565b610806565b34801561020e57600080fd5b5061022261021d3660046134a3565b610911565b60405161018c91906137ed565b34801561023b57600080fd5b5061017f61024a366004612fc5565b610a5d565b34801561025b57600080fd5b5061026f61026a366004613681565b610aba565b60405161018c9190613730565b61015861028a36600461332b565b6103f1565b34801561029b57600080fd5b5061017f610b16565b3480156102b057600080fd5b506101586102bf3660046133ce565b610b1c565b3480156102d057600080fd5b506101586102df3660046131b3565b610bb5565b3480156102f057600080fd5b506103046102ff366004613062565b610d29565b60405161018c91906138b9565b34801561031d57600080fd5b5061015861032c36600461333f565b610df3565b34801561033d57600080fd5b5061015861034c36600461310c565b610ed2565b34801561035d57600080fd5b506101b561036c36600461302a565b610eeb565b34801561037d57600080fd5b5061030461038c36600461314c565b610f26565b34801561039d57600080fd5b506101586103ac3660046133b7565b610fa2565b3480156103bd57600080fd5b506101586103cc3660046132be565b6110a6565b3480156103dd57600080fd5b506101b56103ec3660046133fb565b6111d6565b73ffffffffffffffffffffffffffffffffffffffff8216610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613943565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff841660011461066657341561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906139fd565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906104f590339030908790600401613751565b602060405180830381600087803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105479190613566565b506105506119b7565b610586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613a5a565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260409020548061065c576003805460010190819055600081815260056020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b169081179091558352600490915290819020829055519092507ff977d54986414fc91816901629d1d788ad95448ab4198dcb9b6dc5ed2b930c1f9061064f9087908590613782565b60405180910390a1610660565b8091505b506106a3565b34821461069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906138e6565b5060015b6106be838284604051806020016040528060008152506119eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061078a57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000145b806107d657507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b90505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b3373ffffffffffffffffffffffffffffffffffffffff8616148061082f575061082f8533610eeb565b610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806141be602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166108f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061412f6030913960400191505060405180910390fd5b6108fc85858585611aa0565b61090a858585855a86611df4565b5050505050565b6060815183511461096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061415f602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561098757600080fd5b506040519080825280602002602001820160405280156109b1578160200160208202803683370190505b50905060005b8451811015610a55576000808683815181106109cf57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858381518110610a1f57fe5b6020026020010151815260200190815260200160002054828281518110610a4257fe5b60209081029190910101526001016109b7565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020526040902054806107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613dc5565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16806107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613c51565b60035490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff8516610c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d0b565b6060610c0c612df6565b6060610cbf89857fa3d4926e8cf8fe8e020cd29f514c256bc2eec62aa2337e415f1a33a4828af5a060001b8c8c8c604051602001610c4a9190613699565b604051602081830303815290604052805190602001208c604051602001610c719190613699565b604051602081830303815290604052805190602001208c610c93576000610c96565b60015b604051602001610cab9695949392919061383c565b604051602081830303815290604052612061565b9050610ccd89898989611aa0565b8415610d105780806020019051810190610ce7919061364c565b8094508193505050610d0189898989866020015188611df4565b610d0b8983612230565b610d1e565b610d1e898989895a86611df4565b505050505050505050565b6000333014610d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613b71565b60005b8451811015610dc757610d8c858281518110610d7f57fe5b6020026020010151610aba565b50610dbf3087878481518110610d9e57fe5b6020026020010151878581518110610db257fe5b60200260200101516124d9565b600101610d67565b507fbc197c81000000000000000000000000000000000000000000000000000000009695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610e40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613ab7565b6060610e4a612df6565b6060610e8289857fce0b514b3931bdbe4d5d44e4f035afe7113767b7db71949271f6a62d9c60f558828c8c8c8c610c93576000610c96565b9050610e90898989896126da565b8415610ec45780806020019051810190610eaa919061364c565b8094508193505050610d01898989898660200151886127dd565b610d1e898989895a866127dd565b6000610edd84610a5d565b90506106be338483856124d9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6000333014610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906139a0565b610f6a84610aba565b50610f77308686866124d9565b507ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3373ffffffffffffffffffffffffffffffffffffffff86161480610fcb5750610fcb8533610eeb565b611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614029602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613fc7602b913960400191505060405180910390fd5b611098858585856126da565b61090a858585855a866127dd565b606061110286837ff5d4c820494c8595de274c7ff619bead38aac4fbc3d143b5bf956aa4b84fa5248289896110dc5760006110df565b60015b896110eb5760006110ee565b60015b604051602001610cab95949392919061387d565b73ffffffffffffffffffffffffffffffffffffffff8781166000818152600160209081526040808320948b16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168915151790555192935090917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190611196908890613831565b60405180910390a382156111ce576111ac612df6565b818060200190518101906111c09190613619565b90506111cc8782612230565b505b505050505050565b600080825111611231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806141ed6043913960600191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851661129d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018061418b6033913960400191505060405180910390fd5b60006112a8836129ce565b60f81c905060058110611306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614088603a913960400191505060405180910390fd5b60008160ff16600581111561131757fe5b905060008080808085600581111561132b57fe5b1415611382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806140c26036913960400191505060405180910390fd5b600185600581111561139057fe5b14156114d35787516061146113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806140f86037913960400191505060405180910390fd5b6113fb886000612a8b565b9250611408886020612a8b565b91508760408151811061141757fe5b602001015160f81c60f81b60f81c935060018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611481573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8d811691161497506119af9650505050505050565b60028560058111156114e157fe5b1415611631578751606114611541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806140f86037913960400191505060405180910390fd5b61154c886000612a8b565b9250611559886020612a8b565b91508760408151811061156857fe5b01602090810151604080517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081850152603c8082018f905282518083039091018152605c82018084528151918601919091206000909152607c82018084525260f89290921c609c830181905260bc830187905260dc8301869052905190965060019260fc8084019391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611481573d6000803e3d6000fd5b600385600581111561163f57fe5b14156117f757604080517f20c13b0b000000000000000000000000000000000000000000000000000000008152600481019182528a5160448201528a5173ffffffffffffffffffffffffffffffffffffffff8e16926320c13b0b928d928d92918291602482019160640190602087019080838360005b838110156116cd5781810151838201526020016116b5565b50505050905090810190601f1680156116fa5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561172d578181015183820152602001611715565b50505050905090810190601f16801561175a5780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561177957600080fd5b505afa15801561178d573d6000803e3d6000fd5b505050506040513d60208110156117a357600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f20c13b0b000000000000000000000000000000000000000000000000000000001496506119af95505050505050565b600485600581111561180557fe5b141561195e57604080517f1626ba7e000000000000000000000000000000000000000000000000000000008152600481018c8152602482019283528a5160448301528a5173ffffffffffffffffffffffffffffffffffffffff8f1693631626ba7e938f938e9390929160640190602085019080838360005b8381101561189557818101518382015260200161187d565b50505050905090810190601f1680156118c25780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b1580156118e057600080fd5b505afa1580156118f4573d6000803e3d6000fd5b505050506040513d602081101561190a57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e000000000000000000000000000000000000000000000000000000001496506119af95505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614088603a913960400191505060405180910390fd5b949350505050565b6000803d80156119ce57602081146119d7576119e3565b600191506119e3565b60206000803e60005191505b501515905090565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320868452909152902054611a249083612af3565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260208181526040808320888452825280832094909455835187815290810186905283519293919233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62928290030190a46106be60008585855a866127dd565b8051825114611afa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806140536035913960400191505060405180910390fd5b815160005b81811015611cec57611b8f838281518110611b1657fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110611b6a57fe5b6020026020010151815260200190815260200160002054612b6e90919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611bdb57fe5b6020026020010151815260200190815260200160002081905550611c7d838281518110611c0457fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110611c5857fe5b6020026020010151815260200190815260200160002054612af390919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611cc957fe5b602090810291909101810151825281019190915260400160002055600101611aff565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611d99578181015183820152602001611d81565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611dd8578181015183820152602001611dc0565b5050505090500194505050505060405180910390a45050505050565b611e138573ffffffffffffffffffffffffffffffffffffffff16612be5565b156111ce5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611ecb578181015183820152602001611eb3565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611f0a578181015183820152602001611ef2565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611f46578181015183820152602001611f2e565b50505050905090810190601f168015611f735780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015611f9857600080fd5b5087f1158015611fac573d6000803e3d6000fd5b50505050506040513d6020811015611fc357600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180614230603f913960400191505060405180910390fd5b6060808380602001905181019061207891906135c2565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040812054919450919250906120b0836041612a8b565b90508181108015906120c457508160640181105b6120fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613e22565b60006121368683878051906020012060405160200161211b939291906136cf565b60405160208183030381529060405280519060200120612c1c565b9050606086838760405160200161214f939291906136f6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825273ffffffffffffffffffffffffffffffffffffffff8c166000818152600260205292909220600187019081905590935090917fb861b7bdbe611a846ab271b8d2810391bc8b5a968f390c322438ecab66bccf59916121da91613edc565b60405180910390a26121ee898383886111d6565b612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613b14565b50505050509392505050565b600061223f82606001516129ce565b60f81c90506002811061227e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613e7f565b60008160ff16600281111561228f57fe5b835160408501519192506000918291829173ffffffffffffffffffffffffffffffffffffffff16156122c55786604001516122c7565b335b925060008560028111156122d757fe5b14156123d65786606001518060200190518101906122f59190612ffd565b909450915073ffffffffffffffffffffffffffffffffffffffff841630141561234657612324888484846126da565b6123418884845a85604051806020016040528060008152506127dd565b6123d1565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f242432a9061239e908b908790879087906004016137a8565b600060405180830381600087803b1580156123b857600080fd5b505af11580156123cc573d6000803e3d6000fd5b505050505b6124cf565b86606001518060200190518101906123ee9190612fe1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290945073ffffffffffffffffffffffffffffffffffffffff8516906323b872dd90612447908b9087908690600401613751565b602060405180830381600087803b15801561246157600080fd5b505af1158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190613566565b6124cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613cae565b5050505050505050565b6124e4848383612d4b565b600182146125ea57600082815260056020526040908190205490517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690819063a9059cbb906125539087908690600401613782565b602060405180830381600087803b15801561256d57600080fd5b505af1158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a59190613566565b506125ae6119b7565b6125e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d68565b506106be565b73ffffffffffffffffffffffffffffffffffffffff8316612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613bf4565b60008373ffffffffffffffffffffffffffffffffffffffff168260405161265d9061372d565b60006040518083038185875af1925050503d806000811461269a576040519150601f19603f3d011682016040523d82523d6000602084013e61269f565b606091505b505090508061090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d68565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546127139082612b6e565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260208181526040808320878452825280832094909455918616815280825282812085825290915220546127639082612af3565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6127fc8573ffffffffffffffffffffffffffffffffffffffff16612be5565b156111ce5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156128b557818101518382015260200161289d565b50505050905090810190601f1680156128e25780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561290557600080fd5b5087f1158015612919573d6000803e3d6000fd5b50505050506040513d602081101561293057600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061426f603a913960400191505060405180910390fd5b600080825111612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180613ff26037913960400191505060405180910390fd5b81600183510381518110612a3957fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507fff000000000000000000000000000000000000000000000000000000000000001690565b60008160200183511015612aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806142a9603c913960400191505060405180910390fd5b50016020015190565b600082820183811015612b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b600082821115612bdf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000813f8015801590612b6757507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b604080518082018252600281527f1901000000000000000000000000000000000000000000000000000000000000602080830191825283517f035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d47498183015230818601528451808203860181526060820190955284519490910193909320825160009491928692608001918291908083835b60208310612ce957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612cac565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209392505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208181526040808320858452909152902054612d849082612b6e565b73ffffffffffffffffffffffffffffffffffffffff841660008181526020818152604080832087845282528083209490945583518681529081018590528351919333927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4505050565b60405180608001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600082601f830112612e44578081fd5b8135612e57612e5282613f09565b613ee5565b818152915060208083019084810181840286018201871015612e7857600080fd5b60005b84811015612e9757813584529282019290820190600101612e7b565b505050505092915050565b600082601f830112612eb2578081fd5b8135612ec0612e5282613f27565b9150808252836020828501011115612ed757600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612f00578081fd5b8151612f0e612e5282613f27565b9150808252836020828501011115612f2557600080fd5b612f36816020840160208601613f67565b5092915050565b600060808284031215612f4e578081fd5b6040516080810167ffffffffffffffff8282108183111715612f6c57fe5b81604052829350845183526020850151602084015260408501519150612f9182613f93565b8160408401526060850151915080821115612fab57600080fd5b50612fb885828601612ef0565b6060830152505092915050565b600060208284031215612fd6578081fd5b8135612b6781613f93565b600060208284031215612ff2578081fd5b8151612b6781613f93565b6000806040838503121561300f578081fd5b825161301a81613f93565b6020939093015192949293505050565b6000806040838503121561303c578182fd5b823561304781613f93565b9150602083013561305781613f93565b809150509250929050565b600080600080600060a08688031215613079578081fd5b853561308481613f93565b9450602086013561309481613f93565b9350604086013567ffffffffffffffff808211156130b0578283fd5b6130bc89838a01612e34565b945060608801359150808211156130d1578283fd5b6130dd89838a01612e34565b935060808801359150808211156130f2578283fd5b506130ff88828901612ea2565b9150509295509295909350565b600080600060608486031215613120578283fd5b833561312b81613f93565b9250602084013561313b81613f93565b929592945050506040919091013590565b600080600080600060a08688031215613163578081fd5b853561316e81613f93565b9450602086013561317e81613f93565b93506040860135925060608601359150608086013567ffffffffffffffff8111156131a7578182fd5b6130ff88828901612ea2565b60008060008060008060c087890312156131cb578384fd5b86356131d681613f93565b955060208701356131e681613f93565b9450604087013567ffffffffffffffff80821115613202578586fd5b61320e8a838b01612e34565b95506060890135915080821115613223578283fd5b61322f8a838b01612e34565b94506080890135915061324182613fb8565b90925060a08801359080821115613256578283fd5b5061326389828a01612ea2565b9150509295509295509295565b600080600080600060a08688031215613287578283fd5b853561329281613f93565b945060208601356132a281613f93565b9350604086013567ffffffffffffffff808211156130b0578485fd5b600080600080600060a086880312156132d5578283fd5b85356132e081613f93565b945060208601356132f081613f93565b9350604086013561330081613fb8565b9250606086013561331081613fb8565b9150608086013567ffffffffffffffff8111156131a7578182fd5b600080600060608486031215613120578081fd5b60008060008060008060c08789031215613357578384fd5b863561336281613f93565b9550602087013561337281613f93565b94506040870135935060608701359250608087013561339081613fb8565b915060a087013567ffffffffffffffff8111156133ab578182fd5b61326389828a01612ea2565b600080600080600060a08688031215613163578283fd5b600080604083850312156133e0578182fd5b82356133eb81613f93565b9150602083013561305781613fb8565b60008060008060808587031215613410578182fd5b843561341b81613f93565b935060208501359250604085013567ffffffffffffffff8082111561343e578384fd5b61344a88838901612ea2565b9350606087013591508082111561345f578283fd5b5061346c87828801612ea2565b91505092959194509250565b6000806040838503121561348a578182fd5b823561349581613f93565b946020939093013593505050565b600080604083850312156134b5578182fd5b823567ffffffffffffffff808211156134cc578384fd5b818501915085601f8301126134df578384fd5b81356134ed612e5282613f09565b80828252602080830192508086018a82838702890101111561350d578889fd5b8896505b8487101561353857803561352481613f93565b845260019690960195928101928101613511565b50909650870135935050508082111561354f578283fd5b5061355c85828601612e34565b9150509250929050565b600060208284031215613577578081fd5b8151612b6781613fb8565b600060208284031215613593578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612b67578182fd5b600080604083850312156135d4578182fd5b825167ffffffffffffffff808211156135eb578384fd5b6135f786838701612ef0565b9350602085015191508082111561360c578283fd5b5061355c85828601612ef0565b60006020828403121561362a578081fd5b815167ffffffffffffffff811115613640578182fd5b6119af84828501612f3d565b6000806040838503121561365e578182fd5b825167ffffffffffffffff80821115613675578384fd5b6135f786838701612f3d565b600060208284031215613692578081fd5b5035919050565b815160009082906020808601845b838110156136c3578151855293820193908201906001016136a7565b50929695505050505050565b600084516136e1818460208901613f67565b91909101928352506020820152604001919050565b60008451613708818460208901613f67565b82018481528351613720816020808501908801613f67565b0160200195945050505050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6020808252825182820181905260009190848201906040850190845b8181101561382557835183529284019291840191600101613809565b50909695505050505050565b901515815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b94855273ffffffffffffffffffffffffffffffffffffffff93841660208601529190921660408401526060830191909152608082015260a00190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252602d908201527f4d657461455243323057726170706572236465706f7369743a20494e434f525260408201527f4543545f4d53475f56414c554500000000000000000000000000000000000000606082015260800190565b6020808252602b908201527f4d657461455243323057726170706572236465706f7369743a20494e56414c4960408201527f445f524543495049454e54000000000000000000000000000000000000000000606082015260800190565b6020808252603c908201527f4d657461455243323057726170706572236f6e4552433131353552656365697660408201527f65643a20494e56414c49445f455243313135355f524543454956454400000000606082015260800190565b6020808252602c908201527f4d657461455243323057726170706572236465706f7369743a204e4f4e5f4e5560408201527f4c4c5f4d53475f56414c55450000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d657461455243323057726170706572236465706f7369743a205452414e534660408201527f45525f4641494c45440000000000000000000000000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461236d657461536166655472616e7366657246726f6d60408201527f3a20494e56414c49445f524543495049454e5400000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f5349474e415455524500000000000000000000000000606082015260800190565b60208082526041908201527f4d657461455243323057726170706572236f6e4552433131353542617463685260408201527f656365697665643a20494e56414c49445f455243313135355f5245434549564560608201527f4400000000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602c908201527f4d6574614552433230577261707065722377697468647261773a20494e56414c60408201527f49445f524543495049454e540000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f4d657461455243323057726170706572236765744964416464726573733a205560408201527f4e524547495354455245445f544f4b454e000000000000000000000000000000606082015260800190565b60208082526032908201527f455243313135354d657461235f7472616e736665724761734665653a2045524360408201527f32305f5452414e534645525f4641494c45440000000000000000000000000000606082015260800190565b60208082526038908201527f455243313135354d657461236d6574615361666542617463685472616e73666560408201527f7246726f6d3a20494e56414c49445f524543495049454e540000000000000000606082015260800190565b6020808252602a908201527f4d6574614552433230577261707065722377697468647261773a205452414e5360408201527f4645525f4641494c454400000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4d65746145524332305772617070657223676574546f6b656e49443a20554e5260408201527f4547495354455245445f544f4b454e0000000000000000000000000000000000606082015260800190565b6020808252602f908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f4e4f4e43450000000000000000000000000000000000606082015260800190565b6020808252602e908201527f455243313135354d657461235f7472616e736665724761734665653a20554e5360408201527f5550504f525445445f544f4b454e000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715613f0157fe5b604052919050565b600067ffffffffffffffff821115613f1d57fe5b5060209081020190565b600067ffffffffffffffff821115613f3b57fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015613f82578181015183820152602001613f6a565b838111156106be5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114613fb557600080fd5b50565b8015158114613fb557600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f52455155495245444552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f524551554952454445524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e455245524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f525369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f524551554952454445524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d4553534147454c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544a264697066735822122044cddb091b71cd6a1f7302a3257892b47a563a3ef597c504d327af7d9ad101ff64736f6c63430007040033",
"linkReferences": {},
"deployedLinkReferences": {}
}