@pendle/core-v2 0.17.0-testnet → 0.17.1-testnet

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  2. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -40
  3. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  4. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.json +0 -38
  5. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  6. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  7. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  8. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +136 -60
  9. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  10. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
  11. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  12. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
  13. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  14. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
  15. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  16. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
  17. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  18. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
  19. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  20. package/contracts/core/BulkSeller/BulkSeller.sol +0 -10
  21. package/contracts/interfaces/IPBulkSeller.sol +0 -4
  22. package/contracts/offchain-helpers/RouterStatic.sol +40 -2
  23. package/package.json +3 -3
  24. package/typechain-types/BulkSeller.ts +0 -68
  25. package/typechain-types/IPBulkSeller.ts +0 -68
  26. package/typechain-types/RouterStatic.ts +63 -5
  27. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
  28. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  29. package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
  30. package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
  31. package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
  32. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  33. package/typechain-types/factories/BulkSeller__factory.ts +1 -39
  34. package/typechain-types/factories/IPBulkSeller__factory.ts +0 -38
  35. package/typechain-types/factories/RouterStatic__factory.ts +77 -1
@@ -671,8 +671,8 @@
671
671
  "type": "function"
672
672
  }
673
673
  ],
674
- "bytecode": "0x60a06040523480156200001157600080fd5b5060405162003ba438038062003ba4833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051613b096200009b6000396000818161012101526114780152613b096000f3fe6080604052600436106100605760003560e01c8063357d654014610065578063a000aaa91461009c578063abbc79d0146100af578063bf1bd434146100cf578063e15cc098146100ef578063f95308001461010f578063fdd71f4314610150575b600080fd5b34801561007157600080fd5b50610085610080366004613156565b610170565b60405161009392919061319c565b60405180910390f35b6100856100aa3660046132a0565b61024d565b3480156100bb57600080fd5b506100856100ca36600461331f565b610352565b3480156100db57600080fd5b506100856100ea366004613156565b610478565b3480156100fb57600080fd5b5061008561010a36600461338a565b61068d565b34801561011b57600080fd5b506101437f000000000000000000000000000000000000000000000000000000000000000081565b60405161009391906133e7565b34801561015c57600080fd5b5061008561016b36600461338a565b610898565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156101b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d891906133fb565b92505091506101e981338389610954565b6101f7888884848a8a610975565b90945092506001600160a01b0380891690881633600080516020613a948339815191526102238a610aef565b61022c89610b0c565b60405161023a92919061319c565b60405180910390a4505094509492505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b591906133fb565b925050915060006102c98284600189610b26565b90506102d98a8a84848c8c610dd7565b90955093506102eb6020870187613448565b6001600160a01b0316896001600160a01b0316336001600160a01b0316600080516020613ab48339815191528d6103218a610b0c565b61032e8c60200135610aef565b60405161033d93929190613465565b60405180910390a45050509550959350505050565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ba91906133fb565b92505091506103cb81338389610954565b60006103ed6103e2846103dd89613503565b610f1f565b8985858b6001610975565b945090506104078984836104008a613503565b6000610f47565b94506104166020870187613448565b6001600160a01b0316886001600160a01b0316336001600160a01b0316600080516020613ab48339815191528c61044c8c610aef565b6104558b610b0c565b60405161046493929190613465565b60405180910390a450505094509492505050565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156104bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e091906133fb565b92505091506000826001600160a01b03166370a08231336040518263ffffffff1660e01b815260040161051391906133e7565b602060405180830381865afa158015610530573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055491906135c0565b9050876001600160a01b03166329910b118389610572338e8c61112e565b6040518463ffffffff1660e01b815260040161059093929190613629565b60408051808303816000875af11580156105ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d29190613659565b6040516370a0823160e01b81529095506001600160a01b03851691506370a08231906106029033906004016133e7565b602060405180830381865afa15801561061f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064391906135c0565b61064d9082613693565b94506001600160a01b03808a1690891633600080516020613a948339815191526106768b610b0c565b61067f8a610aef565b60405161046492919061319c565b6000806000866001600160a01b031663794052f3306040518263ffffffff1660e01b81526004016106be91906133e7565b61012060405180830381865afa1580156106dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070091906136b1565b90506000876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076691906133fb565b9250505061078961077f826001600160a01b0316611160565b83908942896111c6565b5090945050858411156107bc57838660405163570cfb8160e01b81526004016107b392919061319c565b60405180910390fd5b6107c881338387610954565b876001600160a01b0316635b709f1782866107e38d8c61131b565b6040518463ffffffff1660e01b815260040161080193929190613629565b60408051808303816000875af115801561081f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108439190613659565b9350506001600160a01b03808a1690891633600080516020613a9483398151915261086d88610aef565b6108768c610b0c565b60405161088492919061319c565b60405180910390a450509550959350505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090091906133fb565b92505091506109118233838a610954565b61091f8989838a8a8a610dd7565b90945092506001600160a01b03808a1690891633600080516020613a9483398151915261094b88610b0c565b6108768c610aef565b801561096f5761096f6001600160a01b03851684848461134a565b50505050565b6000806000866001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016109a691906133e7565b602060405180830381865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e791906135c0565b9050876001600160a01b0316635b709f178787610a048d8961131b565b6040518463ffffffff1660e01b8152600401610a2293929190613629565b60408051808303816000875af1158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190613659565b6040516370a0823160e01b81529093508291506001600160a01b038916906370a0823190610a96908d906004016133e7565b602060405180830381865afa158015610ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad791906135c0565b610ae19190613693565b925050965096945050505050565b6000610afa82610b0c565b610b0690600019613733565b92915050565b60006001600160ff1b03821115610b2257600080fd5b5090565b6000610b43610b386020840184613448565b3384602001356113b5565b6000610b556060840160408501613448565b6001600160a01b0316610b6b6020850185613448565b6001600160a01b03161415905060008115610c0b57610bec610b906020860186613448565b6020860135610ba560a0880160808901613448565b610bb260a0890189613763565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142192505050565b610c04610bff6060860160408701613448565b61152b565b9050610c12565b5060208301355b6000610c246080860160608701613448565b6001600160a01b031614610ce457610c5b610c456060860160408701613448565b610c556080870160608801613448565b836115b5565b610c6b6080850160608601613448565b6001600160a01b031663b27670708883886040518463ffffffff1660e01b8152600401610c9a93929190613465565b6020604051808303816000875af1158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd91906135c0565b9250610dcd565b600080610cf76060870160408801613448565b6001600160a01b031614610d0c576000610d0e565b815b9050610d29610d236060870160408801613448565b88611679565b6001600160a01b0387166320e8c565828a610d4a60608a0160408b01613448565b6040516001600160e01b031960e086901b1681526001600160a01b0392831660048201529116602482015260448101869052606481018a905260840160206040518083038185885af1158015610da4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610dc991906135c0565b9350505b5050949350505050565b6000806000876001600160a01b031663794052f3306040518263ffffffff1660e01b8152600401610e0891906133e7565b61012060405180830381865afa158015610e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a91906136b1565b9050610e6b610e61886001600160a01b0316611160565b8290884288611731565b50925084831015610e9357828560405163a59b8c3160e01b81526004016107b392919061319c565b876001600160a01b03166329910b118885610eae8d8a61187a565b6040518463ffffffff1660e01b8152600401610ecc93929190613629565b60408051808303816000875af1158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e9190613659565b939a93995092975050505050505050565b60608101516000906001600160a01b0316610f3a5782610f40565b81606001515b9392505050565b60008115610f6457610f648533610f5e8887610f1f565b87610954565b825160408401516001600160a01b0390811691161415600081610f875787610f89565b305b60608601519091506000906001600160a01b0316156110215785606001516001600160a01b031663bd5688d5838960006040518463ffffffff1660e01b8152600401610fd793929190613465565b6020604051808303816000875af1158015610ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101a91906135c0565b90506110b3565b604086810151905163769f8e5d60e01b81526001600160a01b038481166004830152602482018a9052918216604482015260006064820152600160848201529089169063769f8e5d9060a4016020604051808303816000875af115801561108c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b091906135c0565b90505b82156110f2576110d186604001518288608001518960a00151611421565b85516110dc9061152b565b93506110ed86600001518a866115b5565b6110f6565b8093505b856020015184101561112257602086015160405163c5b5576d60e01b81526107b391869160040161319c565b50505095945050505050565b6060600084848460405160200161114894939291906137d2565b60405160208183030381529060405290509392505050565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af11580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0691906135c0565b60408051608081018252868152602081018690529081018490526060810183905260009081908190816111fa8a8a89611892565b9050600061121b8760006112168587600001516000015161198c565b611a34565b905060005b81606001518110156112f65760006112388383611b3c565b9050600080611251876000015187896020015186611ba8565b5091509150600061126f838960200151611bfc90919063ffffffff16565b9050600061128b6112808387613693565b60208b015190611c11565b9050886040015181106112d25760208701859052604089015160808801516112b4918391611c1d565b156112cd57939a50929850965061131095505050505050565b6112e0565b6112dd856001613807565b87525b5050505050806112ef9061381a565b9050611220565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b60606002838360405160200161133393929190613833565b604051602081830303815290604052905092915050565b6040516001600160a01b038085166024830152831660448201526064810182905261096f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611c50565b6001600160a01b038316611406578034146114015760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b60448201526064016107b3565b505050565b8015611401576114016001600160a01b03841683308461134a565b6001600160a01b038216158061143657508051155b1561145457604051631e59c84360e01b815260040160405180910390fd5b61145e8483611679565b60405163726d379760e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e4da6f2e906114af908590889060040161385b565b600060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114f4919081019061387d565b9050611523816001600160a01b03871615611510576000611512565b855b6001600160a01b0386169190611d22565b505050505050565b60006001600160a01b038216156115ae576040516370a0823160e01b81526001600160a01b038316906370a08231906115689030906004016133e7565b602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a991906135c0565b610b06565b4792915050565b806000036115c257505050565b6001600160a01b038316611665576000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461161d576040519150601f19603f3d011682016040523d82523d6000602084013e611622565b606091505b505090508061096f5760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b60448201526064016107b3565b6114016001600160a01b0384168383611d48565b6001600160a01b03821661168b575050565b61169d60026001600160601b03613900565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa1580156116f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171a91906135c0565b101561172d5761172d8282600019611d67565b5050565b604080516080810182528681526020810186905290810184905260608101839052600090819081611763898988611892565b905060006117988661178685604001518660200151611e7b90919063ffffffff16565b6117938560200151611e87565b611e9e565b905060005b81606001518110156112f6576000806117c0848688600001516000015186611f41565b91509150816117d457602084015250611860565b6000806117eb8860000151888a6020015186611fac565b509150915060006118108960400151846118059190613807565b60208b015190611e7b565b90508084116118525783875260808701516000906118319086908490611fd2565b9050801561184c575092995097506118709650505050505050565b5061185a565b602087018490525b50505050505b6118698161381a565b905061179d565b9550959350505050565b60606001838360405160200161133393929190613833565b6118bd6040518060800160405280600081526020016000815260200160008152602001600081525090565b60a084015182106118e15760405163b2094b5960e01b815260040160405180910390fd5b6000828560a001516118f39190613693565b90506118ff8582612000565b82526020850151611911908590612061565b60208301528451158061192657506020820151155b1561194d578451602083015160405163b1c4aefb60e01b81526107b392919060040161319c565b61196b85600001518661010001518460200151856000015185612098565b604083015260c085015161197f9082612119565b6060830152509392505050565b6000806119b96119b48560000151866040015187606001516119ae9190613926565b9061214d565b612170565b905060006119d96119d2670de0b6b3a76400008461394d565b8390612585565b905060006119f78660200151866119f0919061394d565b839061214d565b90506000611a058287613926565b90506103e8611a13826125ab565b611a1f906103e7613975565b611a29919061398c565b979650505050505050565b611a666040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b602084015184511180611a845750670de0b6b3a76400008460800151115b15611ab157835160208501516080860151604051632cc06bc160e21b81526107b3939291906004016139a0565b8351611abd90846125ba565b81526020840151611ace90836125d0565b6020820181905281511115611b14578351602085015160405163143e763760e31b81526004810192909252602482015260448101849052606481018390526084016107b3565b6040808501519082015260608085015190820152608093840151938101939093525090919050565b600081158015611b4f5750604083015115155b15611b5f57506040820151610b06565b6020830151835111611b8f5760208301518351600291611b7e91613807565b611b88919061398c565b9050610b06565b604051637d388ed960e11b815260040160405180910390fd5b600080600080600080611bc88989611bbf8a610b0c565b8d9291906125df565b925092509250611bd783612733565b9550611be2826125ab565b9450611bed816125ab565b93505050509450945094915050565b600082611c098184612745565b949350505050565b6000610f40838361277b565b6000828410158015611c095750611c4583611c4084670de0b6b3a7640000613807565b612790565b841115949350505050565b6000611ca5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127b09092919063ffffffff16565b8051909150156114015780806020019051810190611cc391906139b6565b6114015760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107b3565b6060611c09848484604051806060016040528060298152602001613a6b602991396127bb565b6114018363a9059cbb60e01b848460405160240161137e9291906139d8565b600080846001600160a01b031663095ea7b360e01b8585604051602401611d8f9291906139d8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611dcd91906139f1565b6000604051808303816000865af19150503d8060008114611e0a576040519150601f19603f3d011682016040523d82523d6000602084013e611e0f565b606091505b5091509150818015611e39575080511580611e39575080806020019051810190611e3991906139b6565b611e745760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b60448201526064016107b3565b5050505050565b6000610f4083836128e1565b60006001611e94836125ab565b610b069190613693565b611ed76040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8351611ee390846125ba565b81526020840151611ef490836125d0565b6020820181905281511180611f145750670de0b6b3a76400008460800151115b15611b1457835160208501516080860151604051632cc06bc160e21b81526107b3939291906004016139a0565b6000806000611f508785611b3c565b90508660a001518111611f6857600192509050611fa3565b6000611f7d8787611f7885610b0c565b6128f6565b90506000811215611f945750600092509050611fa3565b5060a087018190526001925090505b94509492505050565b600080600080600080611fc38989611bbf8a610aef565b925092509250611bd7836125ab565b6000828411158015611c095750611ff583611c4084670de0b6b3a7640000613693565b909310159392505050565b600061200b82610b0c565b61202261201d6201518061016d613975565b610b0c565b84608001516120319190613733565b61203b9190613a0d565b905060008113610b0657604051630e520c3b60e11b8152600481018290526024016107b3565b60008060008312612073576001612077565b6000195b905061208e61201d8561208986612733565b6128e1565b611c099082613733565b6000806120a58684612119565b9050670de0b6b3a76400008112156120d35760405163329e322960e21b8152600481018290526024016107b3565b60006120e96120e2878a61394d565b8990612585565b905060006120f6826129e8565b90506121028187612585565b61210c9084613926565b9998505050505050505050565b60008061212b6201518061016d613975565b6121358486613975565b61213f919061398c565b9050611c096119b482610b0c565b60008061215a8385613733565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015612195575068070c1cc73b00c800008213155b6121d45760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016107b3565b600082121561220c576121e982600003612170565b6a0c097ce7bc90715b34b9f160241b81612205576122056138ea565b0592915050565b60006806f05b59d3b2000000831261224a57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b612280565b6803782dace9d9000000831261227c57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380612280565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126122d05768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261230c576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261234657682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412612380576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126123b957680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126123f25768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261242b576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126124645768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b60008061259a670de0b6b3a764000085613733565b9050828181612167576121676138ea565b600080821215610b2257600080fd5b60008183116125c95781610f40565b5090919050565b60008183106125c95781610f40565b6000806000806126028860000151886020015189600001518a6040015189612a3b565b905060006126186126138784612585565b612ae0565b606089015190915060008713156126875760006126358483612585565b9050670de0b6b3a76400008112156126635760405163329e322960e21b8152600481018290526024016107b3565b61267f61267883670de0b6b3a7640000613926565b849061214d565b9150506126b4565b6126b18161269d81670de0b6b3a7640000613926565b6126a79085613733565b6126139190613a0d565b90505b600060646126c58c60e00151610b0c565b6126cf9084613733565b6126d99190613a0d565b905060006126e78385613926565b905060008112612700576126fb8a82612aee565b61270a565b61270a8a82612b1b565b97506127168a84612aee565b96506127228a83612aee565b955050505050509450945094915050565b6000808213610b22576115a982613a3b565b6000670de0b6b3a764000060018161275d8686613975565b6127679190613807565b6127719190613693565b610f40919061398c565b600082612771670de0b6b3a764000084613975565b60008061279d8385613975565b670de0b6b3a76400009004949350505050565b6060611c0984846000855b60608247101561281c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107b3565b6001600160a01b0385163b6128735760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107b3565b600080866001600160a01b0316858760405161288f91906139f1565b60006040518083038185875af1925050503d80600081146128cc576040519150601f19603f3d011682016040523d82523d6000602084013e6128d1565b606091505b5091509150611a29828286612b48565b6000670de0b6b3a76400006127718484613975565b6000808285602001516129099190613926565b90506000612917858561394d565b90506000821380156129295750600081135b61296a5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b60448201526064016107b3565b60006129986129798484613733565b6020890151612988908961394d565b6129929088613733565b90612585565b905060006129ae6129a98486612585565b612b81565b88519091506000906129c990670de0b6b3a764000090612585565b90506129d9816119ae8486613926565b896040015161210c9190613926565b6000670de0b6b3a76400008203612a125760405163a9c8b14d60e01b815260040160405180910390fd5b6000612a30612a2984670de0b6b3a7640000613926565b8490612585565b9050610f4081612b81565b600080612a488784612c12565b90506000612a596119d2888a61394d565b9050670d529ae9e8600000811315612a905780670d529ae9e8600000604051637e34684f60e11b81526004016107b392919061319c565b6000612a9b826129e8565b905085612aa88289612585565b612ab2919061394d565b9350670de0b6b3a76400008412156111225760405163329e322960e21b8152600481018590526024016107b3565b6000610b0682600019613733565b60008060008312612b00576001612b04565b6000195b905061208e61201d85612b1686612733565b61277b565b60008060008312612b2d576001612b31565b6000195b905061208e61201d85612b4386612733565b612c59565b60608315612b57575081610f40565b825115612b675782518084602001fd5b8160405162461bcd60e51b81526004016107b39190613a57565b6000808213612bc25760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016107b3565b670c7d713b49da000082138015612be05750670f43fc2c04ee000082125b15612c0457670de0b6b3a7640000612bf783612c71565b81612205576122056138ea565b610b0682612d90565b919050565b600081831215612c4f5760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b60448201526064016107b3565b610f408284613926565b60008260018161275d670de0b6b3a764000086613975565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612cb257612cb26138ea565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215612dd157612dc8826a0c097ce7bc90715b34b9f160241b81612dc257612dc26138ea565b05612d90565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312612e1c5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312612e53576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312612e9b576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312612ed6576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312612f0d57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312612f4457690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312612f795768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312612fa457680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312612fd9576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f1775788937937831261300e576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312613042576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312613076576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161309f5761309f6138ea565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b038116811461314857600080fd5b50565b8035612c0d81613133565b6000806000806080858703121561316c57600080fd5b843561317781613133565b9350602085013561318781613133565b93969395505050506040820135916060013590565b918252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156131e3576131e36131aa565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613211576132116131aa565b604052919050565b600060a0828403121561322b57600080fd5b60405160a081016001600160401b038111828210171561324d5761324d6131aa565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b600060c0828403121561329a57600080fd5b50919050565b600080600080600061012086880312156132b957600080fd5b85356132c481613133565b945060208601356132d481613133565b9350604086013592506132ea8760608801613219565b91506101008601356001600160401b0381111561330657600080fd5b61331288828901613288565b9150509295509295909350565b6000806000806080858703121561333557600080fd5b843561334081613133565b9350602085013561335081613133565b92506040850135915060608501356001600160401b0381111561337257600080fd5b61337e87828801613288565b91505092959194509250565b600080600080600061012086880312156133a357600080fd5b85356133ae81613133565b945060208601356133be81613133565b935060408601359250606086013591506133db8760808801613219565b90509295509295909350565b6001600160a01b0391909116815260200190565b60008060006060848603121561341057600080fd5b835161341b81613133565b602085015190935061342c81613133565b604085015190925061343d81613133565b809150509250925092565b60006020828403121561345a57600080fd5b8135610f4081613133565b6001600160a01b039390931683526020830191909152604082015260600190565b60006001600160401b0382111561349f5761349f6131aa565b50601f01601f191660200190565b600082601f8301126134be57600080fd5b81356134d16134cc82613486565b6131e9565b8181528460208386010111156134e657600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0823603121561351557600080fd5b60405160c081016001600160401b038082118383101715613538576135386131aa565b816040528435915061354982613133565b818352602085013560208401526040850135915061356682613133565b8160408401526060850135915061357c82613133565b81606084015261358e6080860161314b565b608084015260a08501359150808211156135a757600080fd5b506135b4368286016134ad565b60a08301525092915050565b6000602082840312156135d257600080fd5b5051919050565b60005b838110156135f45781810151838201526020016135dc565b50506000910152565b600081518084526136158160208601602086016135d9565b601f01601f19169290920160200192915050565b60018060a01b038416815282602082015260606040820152600061365060608301846135fd565b95945050505050565b6000806040838503121561366c57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b0657610b0661367d565b8051612c0d81613133565b600061012082840312156136c457600080fd5b6136cc6131c0565b8251815260208301516020820152604083015160408201526136f0606084016136a6565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b80820260008212600160ff1b8414161561374f5761374f61367d565b8181058314821517610b0657610b0661367d565b6000808335601e1984360301811261377a57600080fd5b8301803591506001600160401b0382111561379457600080fd5b6020019150368190038213156137a957600080fd5b9250929050565b600581106137ce57634e487b7160e01b600052602160045260246000fd5b9052565b608081016137e082876137b0565b6001600160a01b039485166020830152929093166040840152606090920191909152919050565b80820180821115610b0657610b0661367d565b60006001820161382c5761382c61367d565b5060010190565b6060810161384182866137b0565b6001600160a01b0393909316602082015260400152919050565b60408152600061386e60408301856135fd565b90508260208301529392505050565b60006020828403121561388f57600080fd5b81516001600160401b038111156138a557600080fd5b8201601f810184136138b657600080fd5b80516138c46134cc82613486565b8181528560208385010111156138d957600080fd5b6136508260208301602086016135d9565b634e487b7160e01b600052601260045260246000fd5b60006001600160601b038381168061391a5761391a6138ea565b92169190910492915050565b81810360008312801583831316838312821617156139465761394661367d565b5092915050565b808201828112600083128015821682158216171561396d5761396d61367d565b505092915050565b8082028115828204841417610b0657610b0661367d565b60008261399b5761399b6138ea565b500490565b9283526020830191909152604082015260600190565b6000602082840312156139c857600080fd5b81518015158114610f4057600080fd5b6001600160a01b03929092168252602082015260400190565b60008251613a038184602087016135d9565b9190910192915050565b600082613a1c57613a1c6138ea565b600160ff1b821460001984141615613a3657613a3661367d565b500590565b6000600160ff1b8201613a5057613a5061367d565b5060000390565b602081526000610f4060208301846135fd56fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656405499aba408f669fb848399c146fad5bd604d50b15566bdc19e81c40922fab8dc372308269f6e4dd0b4f322160cf0edef154584a3ad62248d654ae846e3eb6e8a264697066735822122095a33db1cbac283ce08e7469aaf987931502ffedf5a6eef8307f010efc1ff3ba64736f6c63430008110033",
675
- "deployedBytecode": "0x6080604052600436106100605760003560e01c8063357d654014610065578063a000aaa91461009c578063abbc79d0146100af578063bf1bd434146100cf578063e15cc098146100ef578063f95308001461010f578063fdd71f4314610150575b600080fd5b34801561007157600080fd5b50610085610080366004613156565b610170565b60405161009392919061319c565b60405180910390f35b6100856100aa3660046132a0565b61024d565b3480156100bb57600080fd5b506100856100ca36600461331f565b610352565b3480156100db57600080fd5b506100856100ea366004613156565b610478565b3480156100fb57600080fd5b5061008561010a36600461338a565b61068d565b34801561011b57600080fd5b506101437f000000000000000000000000000000000000000000000000000000000000000081565b60405161009391906133e7565b34801561015c57600080fd5b5061008561016b36600461338a565b610898565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156101b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d891906133fb565b92505091506101e981338389610954565b6101f7888884848a8a610975565b90945092506001600160a01b0380891690881633600080516020613a948339815191526102238a610aef565b61022c89610b0c565b60405161023a92919061319c565b60405180910390a4505094509492505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b591906133fb565b925050915060006102c98284600189610b26565b90506102d98a8a84848c8c610dd7565b90955093506102eb6020870187613448565b6001600160a01b0316896001600160a01b0316336001600160a01b0316600080516020613ab48339815191528d6103218a610b0c565b61032e8c60200135610aef565b60405161033d93929190613465565b60405180910390a45050509550959350505050565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ba91906133fb565b92505091506103cb81338389610954565b60006103ed6103e2846103dd89613503565b610f1f565b8985858b6001610975565b945090506104078984836104008a613503565b6000610f47565b94506104166020870187613448565b6001600160a01b0316886001600160a01b0316336001600160a01b0316600080516020613ab48339815191528c61044c8c610aef565b6104558b610b0c565b60405161046493929190613465565b60405180910390a450505094509492505050565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156104bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e091906133fb565b92505091506000826001600160a01b03166370a08231336040518263ffffffff1660e01b815260040161051391906133e7565b602060405180830381865afa158015610530573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055491906135c0565b9050876001600160a01b03166329910b118389610572338e8c61112e565b6040518463ffffffff1660e01b815260040161059093929190613629565b60408051808303816000875af11580156105ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d29190613659565b6040516370a0823160e01b81529095506001600160a01b03851691506370a08231906106029033906004016133e7565b602060405180830381865afa15801561061f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064391906135c0565b61064d9082613693565b94506001600160a01b03808a1690891633600080516020613a948339815191526106768b610b0c565b61067f8a610aef565b60405161046492919061319c565b6000806000866001600160a01b031663794052f3306040518263ffffffff1660e01b81526004016106be91906133e7565b61012060405180830381865afa1580156106dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070091906136b1565b90506000876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076691906133fb565b9250505061078961077f826001600160a01b0316611160565b83908942896111c6565b5090945050858411156107bc57838660405163570cfb8160e01b81526004016107b392919061319c565b60405180910390fd5b6107c881338387610954565b876001600160a01b0316635b709f1782866107e38d8c61131b565b6040518463ffffffff1660e01b815260040161080193929190613629565b60408051808303816000875af115801561081f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108439190613659565b9350506001600160a01b03808a1690891633600080516020613a9483398151915261086d88610aef565b6108768c610b0c565b60405161088492919061319c565b60405180910390a450509550959350505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090091906133fb565b92505091506109118233838a610954565b61091f8989838a8a8a610dd7565b90945092506001600160a01b03808a1690891633600080516020613a9483398151915261094b88610b0c565b6108768c610aef565b801561096f5761096f6001600160a01b03851684848461134a565b50505050565b6000806000866001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016109a691906133e7565b602060405180830381865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e791906135c0565b9050876001600160a01b0316635b709f178787610a048d8961131b565b6040518463ffffffff1660e01b8152600401610a2293929190613629565b60408051808303816000875af1158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190613659565b6040516370a0823160e01b81529093508291506001600160a01b038916906370a0823190610a96908d906004016133e7565b602060405180830381865afa158015610ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad791906135c0565b610ae19190613693565b925050965096945050505050565b6000610afa82610b0c565b610b0690600019613733565b92915050565b60006001600160ff1b03821115610b2257600080fd5b5090565b6000610b43610b386020840184613448565b3384602001356113b5565b6000610b556060840160408501613448565b6001600160a01b0316610b6b6020850185613448565b6001600160a01b03161415905060008115610c0b57610bec610b906020860186613448565b6020860135610ba560a0880160808901613448565b610bb260a0890189613763565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142192505050565b610c04610bff6060860160408701613448565b61152b565b9050610c12565b5060208301355b6000610c246080860160608701613448565b6001600160a01b031614610ce457610c5b610c456060860160408701613448565b610c556080870160608801613448565b836115b5565b610c6b6080850160608601613448565b6001600160a01b031663b27670708883886040518463ffffffff1660e01b8152600401610c9a93929190613465565b6020604051808303816000875af1158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd91906135c0565b9250610dcd565b600080610cf76060870160408801613448565b6001600160a01b031614610d0c576000610d0e565b815b9050610d29610d236060870160408801613448565b88611679565b6001600160a01b0387166320e8c565828a610d4a60608a0160408b01613448565b6040516001600160e01b031960e086901b1681526001600160a01b0392831660048201529116602482015260448101869052606481018a905260840160206040518083038185885af1158015610da4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610dc991906135c0565b9350505b5050949350505050565b6000806000876001600160a01b031663794052f3306040518263ffffffff1660e01b8152600401610e0891906133e7565b61012060405180830381865afa158015610e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a91906136b1565b9050610e6b610e61886001600160a01b0316611160565b8290884288611731565b50925084831015610e9357828560405163a59b8c3160e01b81526004016107b392919061319c565b876001600160a01b03166329910b118885610eae8d8a61187a565b6040518463ffffffff1660e01b8152600401610ecc93929190613629565b60408051808303816000875af1158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e9190613659565b939a93995092975050505050505050565b60608101516000906001600160a01b0316610f3a5782610f40565b81606001515b9392505050565b60008115610f6457610f648533610f5e8887610f1f565b87610954565b825160408401516001600160a01b0390811691161415600081610f875787610f89565b305b60608601519091506000906001600160a01b0316156110215785606001516001600160a01b031663bd5688d5838960006040518463ffffffff1660e01b8152600401610fd793929190613465565b6020604051808303816000875af1158015610ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101a91906135c0565b90506110b3565b604086810151905163769f8e5d60e01b81526001600160a01b038481166004830152602482018a9052918216604482015260006064820152600160848201529089169063769f8e5d9060a4016020604051808303816000875af115801561108c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b091906135c0565b90505b82156110f2576110d186604001518288608001518960a00151611421565b85516110dc9061152b565b93506110ed86600001518a866115b5565b6110f6565b8093505b856020015184101561112257602086015160405163c5b5576d60e01b81526107b391869160040161319c565b50505095945050505050565b6060600084848460405160200161114894939291906137d2565b60405160208183030381529060405290509392505050565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af11580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0691906135c0565b60408051608081018252868152602081018690529081018490526060810183905260009081908190816111fa8a8a89611892565b9050600061121b8760006112168587600001516000015161198c565b611a34565b905060005b81606001518110156112f65760006112388383611b3c565b9050600080611251876000015187896020015186611ba8565b5091509150600061126f838960200151611bfc90919063ffffffff16565b9050600061128b6112808387613693565b60208b015190611c11565b9050886040015181106112d25760208701859052604089015160808801516112b4918391611c1d565b156112cd57939a50929850965061131095505050505050565b6112e0565b6112dd856001613807565b87525b5050505050806112ef9061381a565b9050611220565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b60606002838360405160200161133393929190613833565b604051602081830303815290604052905092915050565b6040516001600160a01b038085166024830152831660448201526064810182905261096f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611c50565b6001600160a01b038316611406578034146114015760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b60448201526064016107b3565b505050565b8015611401576114016001600160a01b03841683308461134a565b6001600160a01b038216158061143657508051155b1561145457604051631e59c84360e01b815260040160405180910390fd5b61145e8483611679565b60405163726d379760e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e4da6f2e906114af908590889060040161385b565b600060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114f4919081019061387d565b9050611523816001600160a01b03871615611510576000611512565b855b6001600160a01b0386169190611d22565b505050505050565b60006001600160a01b038216156115ae576040516370a0823160e01b81526001600160a01b038316906370a08231906115689030906004016133e7565b602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a991906135c0565b610b06565b4792915050565b806000036115c257505050565b6001600160a01b038316611665576000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461161d576040519150601f19603f3d011682016040523d82523d6000602084013e611622565b606091505b505090508061096f5760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b60448201526064016107b3565b6114016001600160a01b0384168383611d48565b6001600160a01b03821661168b575050565b61169d60026001600160601b03613900565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa1580156116f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171a91906135c0565b101561172d5761172d8282600019611d67565b5050565b604080516080810182528681526020810186905290810184905260608101839052600090819081611763898988611892565b905060006117988661178685604001518660200151611e7b90919063ffffffff16565b6117938560200151611e87565b611e9e565b905060005b81606001518110156112f6576000806117c0848688600001516000015186611f41565b91509150816117d457602084015250611860565b6000806117eb8860000151888a6020015186611fac565b509150915060006118108960400151846118059190613807565b60208b015190611e7b565b90508084116118525783875260808701516000906118319086908490611fd2565b9050801561184c575092995097506118709650505050505050565b5061185a565b602087018490525b50505050505b6118698161381a565b905061179d565b9550959350505050565b60606001838360405160200161133393929190613833565b6118bd6040518060800160405280600081526020016000815260200160008152602001600081525090565b60a084015182106118e15760405163b2094b5960e01b815260040160405180910390fd5b6000828560a001516118f39190613693565b90506118ff8582612000565b82526020850151611911908590612061565b60208301528451158061192657506020820151155b1561194d578451602083015160405163b1c4aefb60e01b81526107b392919060040161319c565b61196b85600001518661010001518460200151856000015185612098565b604083015260c085015161197f9082612119565b6060830152509392505050565b6000806119b96119b48560000151866040015187606001516119ae9190613926565b9061214d565b612170565b905060006119d96119d2670de0b6b3a76400008461394d565b8390612585565b905060006119f78660200151866119f0919061394d565b839061214d565b90506000611a058287613926565b90506103e8611a13826125ab565b611a1f906103e7613975565b611a29919061398c565b979650505050505050565b611a666040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b602084015184511180611a845750670de0b6b3a76400008460800151115b15611ab157835160208501516080860151604051632cc06bc160e21b81526107b3939291906004016139a0565b8351611abd90846125ba565b81526020840151611ace90836125d0565b6020820181905281511115611b14578351602085015160405163143e763760e31b81526004810192909252602482015260448101849052606481018390526084016107b3565b6040808501519082015260608085015190820152608093840151938101939093525090919050565b600081158015611b4f5750604083015115155b15611b5f57506040820151610b06565b6020830151835111611b8f5760208301518351600291611b7e91613807565b611b88919061398c565b9050610b06565b604051637d388ed960e11b815260040160405180910390fd5b600080600080600080611bc88989611bbf8a610b0c565b8d9291906125df565b925092509250611bd783612733565b9550611be2826125ab565b9450611bed816125ab565b93505050509450945094915050565b600082611c098184612745565b949350505050565b6000610f40838361277b565b6000828410158015611c095750611c4583611c4084670de0b6b3a7640000613807565b612790565b841115949350505050565b6000611ca5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127b09092919063ffffffff16565b8051909150156114015780806020019051810190611cc391906139b6565b6114015760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107b3565b6060611c09848484604051806060016040528060298152602001613a6b602991396127bb565b6114018363a9059cbb60e01b848460405160240161137e9291906139d8565b600080846001600160a01b031663095ea7b360e01b8585604051602401611d8f9291906139d8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611dcd91906139f1565b6000604051808303816000865af19150503d8060008114611e0a576040519150601f19603f3d011682016040523d82523d6000602084013e611e0f565b606091505b5091509150818015611e39575080511580611e39575080806020019051810190611e3991906139b6565b611e745760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b60448201526064016107b3565b5050505050565b6000610f4083836128e1565b60006001611e94836125ab565b610b069190613693565b611ed76040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8351611ee390846125ba565b81526020840151611ef490836125d0565b6020820181905281511180611f145750670de0b6b3a76400008460800151115b15611b1457835160208501516080860151604051632cc06bc160e21b81526107b3939291906004016139a0565b6000806000611f508785611b3c565b90508660a001518111611f6857600192509050611fa3565b6000611f7d8787611f7885610b0c565b6128f6565b90506000811215611f945750600092509050611fa3565b5060a087018190526001925090505b94509492505050565b600080600080600080611fc38989611bbf8a610aef565b925092509250611bd7836125ab565b6000828411158015611c095750611ff583611c4084670de0b6b3a7640000613693565b909310159392505050565b600061200b82610b0c565b61202261201d6201518061016d613975565b610b0c565b84608001516120319190613733565b61203b9190613a0d565b905060008113610b0657604051630e520c3b60e11b8152600481018290526024016107b3565b60008060008312612073576001612077565b6000195b905061208e61201d8561208986612733565b6128e1565b611c099082613733565b6000806120a58684612119565b9050670de0b6b3a76400008112156120d35760405163329e322960e21b8152600481018290526024016107b3565b60006120e96120e2878a61394d565b8990612585565b905060006120f6826129e8565b90506121028187612585565b61210c9084613926565b9998505050505050505050565b60008061212b6201518061016d613975565b6121358486613975565b61213f919061398c565b9050611c096119b482610b0c565b60008061215a8385613733565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015612195575068070c1cc73b00c800008213155b6121d45760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016107b3565b600082121561220c576121e982600003612170565b6a0c097ce7bc90715b34b9f160241b81612205576122056138ea565b0592915050565b60006806f05b59d3b2000000831261224a57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b612280565b6803782dace9d9000000831261227c57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380612280565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126122d05768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261230c576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261234657682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412612380576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126123b957680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126123f25768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261242b576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126124645768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b60008061259a670de0b6b3a764000085613733565b9050828181612167576121676138ea565b600080821215610b2257600080fd5b60008183116125c95781610f40565b5090919050565b60008183106125c95781610f40565b6000806000806126028860000151886020015189600001518a6040015189612a3b565b905060006126186126138784612585565b612ae0565b606089015190915060008713156126875760006126358483612585565b9050670de0b6b3a76400008112156126635760405163329e322960e21b8152600481018290526024016107b3565b61267f61267883670de0b6b3a7640000613926565b849061214d565b9150506126b4565b6126b18161269d81670de0b6b3a7640000613926565b6126a79085613733565b6126139190613a0d565b90505b600060646126c58c60e00151610b0c565b6126cf9084613733565b6126d99190613a0d565b905060006126e78385613926565b905060008112612700576126fb8a82612aee565b61270a565b61270a8a82612b1b565b97506127168a84612aee565b96506127228a83612aee565b955050505050509450945094915050565b6000808213610b22576115a982613a3b565b6000670de0b6b3a764000060018161275d8686613975565b6127679190613807565b6127719190613693565b610f40919061398c565b600082612771670de0b6b3a764000084613975565b60008061279d8385613975565b670de0b6b3a76400009004949350505050565b6060611c0984846000855b60608247101561281c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107b3565b6001600160a01b0385163b6128735760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107b3565b600080866001600160a01b0316858760405161288f91906139f1565b60006040518083038185875af1925050503d80600081146128cc576040519150601f19603f3d011682016040523d82523d6000602084013e6128d1565b606091505b5091509150611a29828286612b48565b6000670de0b6b3a76400006127718484613975565b6000808285602001516129099190613926565b90506000612917858561394d565b90506000821380156129295750600081135b61296a5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b60448201526064016107b3565b60006129986129798484613733565b6020890151612988908961394d565b6129929088613733565b90612585565b905060006129ae6129a98486612585565b612b81565b88519091506000906129c990670de0b6b3a764000090612585565b90506129d9816119ae8486613926565b896040015161210c9190613926565b6000670de0b6b3a76400008203612a125760405163a9c8b14d60e01b815260040160405180910390fd5b6000612a30612a2984670de0b6b3a7640000613926565b8490612585565b9050610f4081612b81565b600080612a488784612c12565b90506000612a596119d2888a61394d565b9050670d529ae9e8600000811315612a905780670d529ae9e8600000604051637e34684f60e11b81526004016107b392919061319c565b6000612a9b826129e8565b905085612aa88289612585565b612ab2919061394d565b9350670de0b6b3a76400008412156111225760405163329e322960e21b8152600481018590526024016107b3565b6000610b0682600019613733565b60008060008312612b00576001612b04565b6000195b905061208e61201d85612b1686612733565b61277b565b60008060008312612b2d576001612b31565b6000195b905061208e61201d85612b4386612733565b612c59565b60608315612b57575081610f40565b825115612b675782518084602001fd5b8160405162461bcd60e51b81526004016107b39190613a57565b6000808213612bc25760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016107b3565b670c7d713b49da000082138015612be05750670f43fc2c04ee000082125b15612c0457670de0b6b3a7640000612bf783612c71565b81612205576122056138ea565b610b0682612d90565b919050565b600081831215612c4f5760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b60448201526064016107b3565b610f408284613926565b60008260018161275d670de0b6b3a764000086613975565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612cb257612cb26138ea565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215612dd157612dc8826a0c097ce7bc90715b34b9f160241b81612dc257612dc26138ea565b05612d90565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312612e1c5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312612e53576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312612e9b576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312612ed6576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312612f0d57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312612f4457690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312612f795768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312612fa457680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312612fd9576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f1775788937937831261300e576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312613042576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312613076576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161309f5761309f6138ea565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b038116811461314857600080fd5b50565b8035612c0d81613133565b6000806000806080858703121561316c57600080fd5b843561317781613133565b9350602085013561318781613133565b93969395505050506040820135916060013590565b918252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156131e3576131e36131aa565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613211576132116131aa565b604052919050565b600060a0828403121561322b57600080fd5b60405160a081016001600160401b038111828210171561324d5761324d6131aa565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b600060c0828403121561329a57600080fd5b50919050565b600080600080600061012086880312156132b957600080fd5b85356132c481613133565b945060208601356132d481613133565b9350604086013592506132ea8760608801613219565b91506101008601356001600160401b0381111561330657600080fd5b61331288828901613288565b9150509295509295909350565b6000806000806080858703121561333557600080fd5b843561334081613133565b9350602085013561335081613133565b92506040850135915060608501356001600160401b0381111561337257600080fd5b61337e87828801613288565b91505092959194509250565b600080600080600061012086880312156133a357600080fd5b85356133ae81613133565b945060208601356133be81613133565b935060408601359250606086013591506133db8760808801613219565b90509295509295909350565b6001600160a01b0391909116815260200190565b60008060006060848603121561341057600080fd5b835161341b81613133565b602085015190935061342c81613133565b604085015190925061343d81613133565b809150509250925092565b60006020828403121561345a57600080fd5b8135610f4081613133565b6001600160a01b039390931683526020830191909152604082015260600190565b60006001600160401b0382111561349f5761349f6131aa565b50601f01601f191660200190565b600082601f8301126134be57600080fd5b81356134d16134cc82613486565b6131e9565b8181528460208386010111156134e657600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0823603121561351557600080fd5b60405160c081016001600160401b038082118383101715613538576135386131aa565b816040528435915061354982613133565b818352602085013560208401526040850135915061356682613133565b8160408401526060850135915061357c82613133565b81606084015261358e6080860161314b565b608084015260a08501359150808211156135a757600080fd5b506135b4368286016134ad565b60a08301525092915050565b6000602082840312156135d257600080fd5b5051919050565b60005b838110156135f45781810151838201526020016135dc565b50506000910152565b600081518084526136158160208601602086016135d9565b601f01601f19169290920160200192915050565b60018060a01b038416815282602082015260606040820152600061365060608301846135fd565b95945050505050565b6000806040838503121561366c57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b0657610b0661367d565b8051612c0d81613133565b600061012082840312156136c457600080fd5b6136cc6131c0565b8251815260208301516020820152604083015160408201526136f0606084016136a6565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b80820260008212600160ff1b8414161561374f5761374f61367d565b8181058314821517610b0657610b0661367d565b6000808335601e1984360301811261377a57600080fd5b8301803591506001600160401b0382111561379457600080fd5b6020019150368190038213156137a957600080fd5b9250929050565b600581106137ce57634e487b7160e01b600052602160045260246000fd5b9052565b608081016137e082876137b0565b6001600160a01b039485166020830152929093166040840152606090920191909152919050565b80820180821115610b0657610b0661367d565b60006001820161382c5761382c61367d565b5060010190565b6060810161384182866137b0565b6001600160a01b0393909316602082015260400152919050565b60408152600061386e60408301856135fd565b90508260208301529392505050565b60006020828403121561388f57600080fd5b81516001600160401b038111156138a557600080fd5b8201601f810184136138b657600080fd5b80516138c46134cc82613486565b8181528560208385010111156138d957600080fd5b6136508260208301602086016135d9565b634e487b7160e01b600052601260045260246000fd5b60006001600160601b038381168061391a5761391a6138ea565b92169190910492915050565b81810360008312801583831316838312821617156139465761394661367d565b5092915050565b808201828112600083128015821682158216171561396d5761396d61367d565b505092915050565b8082028115828204841417610b0657610b0661367d565b60008261399b5761399b6138ea565b500490565b9283526020830191909152604082015260600190565b6000602082840312156139c857600080fd5b81518015158114610f4057600080fd5b6001600160a01b03929092168252602082015260400190565b60008251613a038184602087016135d9565b9190910192915050565b600082613a1c57613a1c6138ea565b600160ff1b821460001984141615613a3657613a3661367d565b500590565b6000600160ff1b8201613a5057613a5061367d565b5060000390565b602081526000610f4060208301846135fd56fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656405499aba408f669fb848399c146fad5bd604d50b15566bdc19e81c40922fab8dc372308269f6e4dd0b4f322160cf0edef154584a3ad62248d654ae846e3eb6e8a264697066735822122095a33db1cbac283ce08e7469aaf987931502ffedf5a6eef8307f010efc1ff3ba64736f6c63430008110033",
674
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162003ba438038062003ba4833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051613b096200009b6000396000818161012101526114780152613b096000f3fe6080604052600436106100605760003560e01c8063357d654014610065578063a000aaa91461009c578063abbc79d0146100af578063bf1bd434146100cf578063e15cc098146100ef578063f95308001461010f578063fdd71f4314610150575b600080fd5b34801561007157600080fd5b50610085610080366004613156565b610170565b60405161009392919061319c565b60405180910390f35b6100856100aa3660046132a0565b61024d565b3480156100bb57600080fd5b506100856100ca36600461331f565b610352565b3480156100db57600080fd5b506100856100ea366004613156565b610478565b3480156100fb57600080fd5b5061008561010a36600461338a565b61068d565b34801561011b57600080fd5b506101437f000000000000000000000000000000000000000000000000000000000000000081565b60405161009391906133e7565b34801561015c57600080fd5b5061008561016b36600461338a565b610898565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156101b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d891906133fb565b92505091506101e981338389610954565b6101f7888884848a8a610975565b90945092506001600160a01b0380891690881633600080516020613a948339815191526102238a610aef565b61022c89610b0c565b60405161023a92919061319c565b60405180910390a4505094509492505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b591906133fb565b925050915060006102c98284600189610b26565b90506102d98a8a84848c8c610dd7565b90955093506102eb6020870187613448565b6001600160a01b0316896001600160a01b0316336001600160a01b0316600080516020613ab48339815191528d6103218a610b0c565b61032e8c60200135610aef565b60405161033d93929190613465565b60405180910390a45050509550959350505050565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ba91906133fb565b92505091506103cb81338389610954565b60006103ed6103e2846103dd89613503565b610f1f565b8985858b6001610975565b945090506104078984836104008a613503565b6000610f47565b94506104166020870187613448565b6001600160a01b0316886001600160a01b0316336001600160a01b0316600080516020613ab48339815191528c61044c8c610aef565b6104558b610b0c565b60405161046493929190613465565b60405180910390a450505094509492505050565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156104bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e091906133fb565b92505091506000826001600160a01b03166370a08231336040518263ffffffff1660e01b815260040161051391906133e7565b602060405180830381865afa158015610530573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055491906135c0565b9050876001600160a01b03166329910b118389610572338e8c61112e565b6040518463ffffffff1660e01b815260040161059093929190613629565b60408051808303816000875af11580156105ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d29190613659565b6040516370a0823160e01b81529095506001600160a01b03851691506370a08231906106029033906004016133e7565b602060405180830381865afa15801561061f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064391906135c0565b61064d9082613693565b94506001600160a01b03808a1690891633600080516020613a948339815191526106768b610b0c565b61067f8a610aef565b60405161046492919061319c565b6000806000866001600160a01b031663794052f3306040518263ffffffff1660e01b81526004016106be91906133e7565b61012060405180830381865afa1580156106dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070091906136b1565b90506000876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076691906133fb565b9250505061078961077f826001600160a01b0316611160565b83908942896111c6565b5090945050858411156107bc57838660405163570cfb8160e01b81526004016107b392919061319c565b60405180910390fd5b6107c881338387610954565b876001600160a01b0316635b709f1782866107e38d8c61131b565b6040518463ffffffff1660e01b815260040161080193929190613629565b60408051808303816000875af115801561081f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108439190613659565b9350506001600160a01b03808a1690891633600080516020613a9483398151915261086d88610aef565b6108768c610b0c565b60405161088492919061319c565b60405180910390a450509550959350505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090091906133fb565b92505091506109118233838a610954565b61091f8989838a8a8a610dd7565b90945092506001600160a01b03808a1690891633600080516020613a9483398151915261094b88610b0c565b6108768c610aef565b801561096f5761096f6001600160a01b03851684848461134a565b50505050565b6000806000866001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016109a691906133e7565b602060405180830381865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e791906135c0565b9050876001600160a01b0316635b709f178787610a048d8961131b565b6040518463ffffffff1660e01b8152600401610a2293929190613629565b60408051808303816000875af1158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190613659565b6040516370a0823160e01b81529093508291506001600160a01b038916906370a0823190610a96908d906004016133e7565b602060405180830381865afa158015610ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad791906135c0565b610ae19190613693565b925050965096945050505050565b6000610afa82610b0c565b610b0690600019613733565b92915050565b60006001600160ff1b03821115610b2257600080fd5b5090565b6000610b43610b386020840184613448565b3384602001356113b5565b6000610b556060840160408501613448565b6001600160a01b0316610b6b6020850185613448565b6001600160a01b03161415905060008115610c0b57610bec610b906020860186613448565b6020860135610ba560a0880160808901613448565b610bb260a0890189613763565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142192505050565b610c04610bff6060860160408701613448565b61152b565b9050610c12565b5060208301355b6000610c246080860160608701613448565b6001600160a01b031614610ce457610c5b610c456060860160408701613448565b610c556080870160608801613448565b836115b5565b610c6b6080850160608601613448565b6001600160a01b031663b27670708883886040518463ffffffff1660e01b8152600401610c9a93929190613465565b6020604051808303816000875af1158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd91906135c0565b9250610dcd565b600080610cf76060870160408801613448565b6001600160a01b031614610d0c576000610d0e565b815b9050610d29610d236060870160408801613448565b88611679565b6001600160a01b0387166320e8c565828a610d4a60608a0160408b01613448565b6040516001600160e01b031960e086901b1681526001600160a01b0392831660048201529116602482015260448101869052606481018a905260840160206040518083038185885af1158015610da4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610dc991906135c0565b9350505b5050949350505050565b6000806000876001600160a01b031663794052f3306040518263ffffffff1660e01b8152600401610e0891906133e7565b61012060405180830381865afa158015610e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a91906136b1565b9050610e6b610e61886001600160a01b0316611160565b8290884288611731565b50925084831015610e9357828560405163a59b8c3160e01b81526004016107b392919061319c565b876001600160a01b03166329910b118885610eae8d8a61187a565b6040518463ffffffff1660e01b8152600401610ecc93929190613629565b60408051808303816000875af1158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e9190613659565b939a93995092975050505050505050565b60608101516000906001600160a01b0316610f3a5782610f40565b81606001515b9392505050565b60008115610f6457610f648533610f5e8887610f1f565b87610954565b825160408401516001600160a01b0390811691161415600081610f875787610f89565b305b60608601519091506000906001600160a01b0316156110215785606001516001600160a01b031663bd5688d5838960006040518463ffffffff1660e01b8152600401610fd793929190613465565b6020604051808303816000875af1158015610ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101a91906135c0565b90506110b3565b604086810151905163769f8e5d60e01b81526001600160a01b038481166004830152602482018a9052918216604482015260006064820152600160848201529089169063769f8e5d9060a4016020604051808303816000875af115801561108c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b091906135c0565b90505b82156110f2576110d186604001518288608001518960a00151611421565b85516110dc9061152b565b93506110ed86600001518a866115b5565b6110f6565b8093505b856020015184101561112257602086015160405163c5b5576d60e01b81526107b391869160040161319c565b50505095945050505050565b6060600084848460405160200161114894939291906137d2565b60405160208183030381529060405290509392505050565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af11580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0691906135c0565b60408051608081018252868152602081018690529081018490526060810183905260009081908190816111fa8a8a89611892565b9050600061121b8760006112168587600001516000015161198c565b611a34565b905060005b81606001518110156112f65760006112388383611b3c565b9050600080611251876000015187896020015186611ba8565b5091509150600061126f838960200151611bfc90919063ffffffff16565b9050600061128b6112808387613693565b60208b015190611c11565b9050886040015181106112d25760208701859052604089015160808801516112b4918391611c1d565b156112cd57939a50929850965061131095505050505050565b6112e0565b6112dd856001613807565b87525b5050505050806112ef9061381a565b9050611220565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b60606002838360405160200161133393929190613833565b604051602081830303815290604052905092915050565b6040516001600160a01b038085166024830152831660448201526064810182905261096f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611c50565b6001600160a01b038316611406578034146114015760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b60448201526064016107b3565b505050565b8015611401576114016001600160a01b03841683308461134a565b6001600160a01b038216158061143657508051155b1561145457604051631e59c84360e01b815260040160405180910390fd5b61145e8483611679565b60405163726d379760e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e4da6f2e906114af908590889060040161385b565b600060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114f4919081019061387d565b9050611523816001600160a01b03871615611510576000611512565b855b6001600160a01b0386169190611d22565b505050505050565b60006001600160a01b038216156115ae576040516370a0823160e01b81526001600160a01b038316906370a08231906115689030906004016133e7565b602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a991906135c0565b610b06565b4792915050565b806000036115c257505050565b6001600160a01b038316611665576000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461161d576040519150601f19603f3d011682016040523d82523d6000602084013e611622565b606091505b505090508061096f5760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b60448201526064016107b3565b6114016001600160a01b0384168383611d48565b6001600160a01b03821661168b575050565b61169d60026001600160601b03613900565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa1580156116f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171a91906135c0565b101561172d5761172d8282600019611d67565b5050565b604080516080810182528681526020810186905290810184905260608101839052600090819081611763898988611892565b905060006117988661178685604001518660200151611e7b90919063ffffffff16565b6117938560200151611e87565b611e9e565b905060005b81606001518110156112f6576000806117c0848688600001516000015186611f41565b91509150816117d457602084015250611860565b6000806117eb8860000151888a6020015186611fac565b509150915060006118108960400151846118059190613807565b60208b015190611e7b565b90508084116118525783875260808701516000906118319086908490611fd2565b9050801561184c575092995097506118709650505050505050565b5061185a565b602087018490525b50505050505b6118698161381a565b905061179d565b9550959350505050565b60606001838360405160200161133393929190613833565b6118bd6040518060800160405280600081526020016000815260200160008152602001600081525090565b60a084015182106118e15760405163b2094b5960e01b815260040160405180910390fd5b6000828560a001516118f39190613693565b90506118ff8582612000565b82526020850151611911908590612061565b60208301528451158061192657506020820151155b1561194d578451602083015160405163b1c4aefb60e01b81526107b392919060040161319c565b61196b85600001518661010001518460200151856000015185612098565b604083015260c085015161197f9082612119565b6060830152509392505050565b6000806119b96119b48560000151866040015187606001516119ae9190613926565b9061214d565b612170565b905060006119d96119d2670de0b6b3a76400008461394d565b8390612585565b905060006119f78660200151866119f0919061394d565b839061214d565b90506000611a058287613926565b90506103e8611a13826125ab565b611a1f906103e7613975565b611a29919061398c565b979650505050505050565b611a666040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b602084015184511180611a845750670de0b6b3a76400008460800151115b15611ab157835160208501516080860151604051632cc06bc160e21b81526107b3939291906004016139a0565b8351611abd90846125ba565b81526020840151611ace90836125d0565b6020820181905281511115611b14578351602085015160405163143e763760e31b81526004810192909252602482015260448101849052606481018390526084016107b3565b6040808501519082015260608085015190820152608093840151938101939093525090919050565b600081158015611b4f5750604083015115155b15611b5f57506040820151610b06565b6020830151835111611b8f5760208301518351600291611b7e91613807565b611b88919061398c565b9050610b06565b604051637d388ed960e11b815260040160405180910390fd5b600080600080600080611bc88989611bbf8a610b0c565b8d9291906125df565b925092509250611bd783612733565b9550611be2826125ab565b9450611bed816125ab565b93505050509450945094915050565b600082611c098184612745565b949350505050565b6000610f40838361277b565b6000828410158015611c095750611c4583611c4084670de0b6b3a7640000613807565b612790565b841115949350505050565b6000611ca5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127b09092919063ffffffff16565b8051909150156114015780806020019051810190611cc391906139b6565b6114015760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107b3565b6060611c09848484604051806060016040528060298152602001613a6b602991396127bb565b6114018363a9059cbb60e01b848460405160240161137e9291906139d8565b600080846001600160a01b031663095ea7b360e01b8585604051602401611d8f9291906139d8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611dcd91906139f1565b6000604051808303816000865af19150503d8060008114611e0a576040519150601f19603f3d011682016040523d82523d6000602084013e611e0f565b606091505b5091509150818015611e39575080511580611e39575080806020019051810190611e3991906139b6565b611e745760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b60448201526064016107b3565b5050505050565b6000610f4083836128e1565b60006001611e94836125ab565b610b069190613693565b611ed76040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8351611ee390846125ba565b81526020840151611ef490836125d0565b6020820181905281511180611f145750670de0b6b3a76400008460800151115b15611b1457835160208501516080860151604051632cc06bc160e21b81526107b3939291906004016139a0565b6000806000611f508785611b3c565b90508660a001518111611f6857600192509050611fa3565b6000611f7d8787611f7885610b0c565b6128f6565b90506000811215611f945750600092509050611fa3565b5060a087018190526001925090505b94509492505050565b600080600080600080611fc38989611bbf8a610aef565b925092509250611bd7836125ab565b6000828411158015611c095750611ff583611c4084670de0b6b3a7640000613693565b909310159392505050565b600061200b82610b0c565b61202261201d6201518061016d613975565b610b0c565b84608001516120319190613733565b61203b9190613a0d565b905060008113610b0657604051630e520c3b60e11b8152600481018290526024016107b3565b60008060008312612073576001612077565b6000195b905061208e61201d8561208986612733565b6128e1565b611c099082613733565b6000806120a58684612119565b9050670de0b6b3a76400008112156120d35760405163329e322960e21b8152600481018290526024016107b3565b60006120e96120e2878a61394d565b8990612585565b905060006120f6826129e8565b90506121028187612585565b61210c9084613926565b9998505050505050505050565b60008061212b6201518061016d613975565b6121358486613975565b61213f919061398c565b9050611c096119b482610b0c565b60008061215a8385613733565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015612195575068070c1cc73b00c800008213155b6121d45760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016107b3565b600082121561220c576121e982600003612170565b6a0c097ce7bc90715b34b9f160241b81612205576122056138ea565b0592915050565b60006806f05b59d3b2000000831261224a57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b612280565b6803782dace9d9000000831261227c57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380612280565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126122d05768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261230c576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261234657682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412612380576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126123b957680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126123f25768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261242b576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126124645768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b60008061259a670de0b6b3a764000085613733565b9050828181612167576121676138ea565b600080821215610b2257600080fd5b60008183116125c95781610f40565b5090919050565b60008183106125c95781610f40565b6000806000806126028860000151886020015189600001518a6040015189612a3b565b905060006126186126138784612585565b612ae0565b606089015190915060008713156126875760006126358483612585565b9050670de0b6b3a76400008112156126635760405163329e322960e21b8152600481018290526024016107b3565b61267f61267883670de0b6b3a7640000613926565b849061214d565b9150506126b4565b6126b18161269d81670de0b6b3a7640000613926565b6126a79085613733565b6126139190613a0d565b90505b600060646126c58c60e00151610b0c565b6126cf9084613733565b6126d99190613a0d565b905060006126e78385613926565b905060008112612700576126fb8a82612aee565b61270a565b61270a8a82612b1b565b97506127168a84612aee565b96506127228a83612aee565b955050505050509450945094915050565b6000808213610b22576115a982613a3b565b6000670de0b6b3a764000060018161275d8686613975565b6127679190613807565b6127719190613693565b610f40919061398c565b600082612771670de0b6b3a764000084613975565b60008061279d8385613975565b670de0b6b3a76400009004949350505050565b6060611c0984846000855b60608247101561281c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107b3565b6001600160a01b0385163b6128735760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107b3565b600080866001600160a01b0316858760405161288f91906139f1565b60006040518083038185875af1925050503d80600081146128cc576040519150601f19603f3d011682016040523d82523d6000602084013e6128d1565b606091505b5091509150611a29828286612b48565b6000670de0b6b3a76400006127718484613975565b6000808285602001516129099190613926565b90506000612917858561394d565b90506000821380156129295750600081135b61296a5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b60448201526064016107b3565b60006129986129798484613733565b6020890151612988908961394d565b6129929088613733565b90612585565b905060006129ae6129a98486612585565b612b81565b88519091506000906129c990670de0b6b3a764000090612585565b90506129d9816119ae8486613926565b896040015161210c9190613926565b6000670de0b6b3a76400008203612a125760405163a9c8b14d60e01b815260040160405180910390fd5b6000612a30612a2984670de0b6b3a7640000613926565b8490612585565b9050610f4081612b81565b600080612a488784612c12565b90506000612a596119d2888a61394d565b9050670d529ae9e8600000811315612a905780670d529ae9e8600000604051637e34684f60e11b81526004016107b392919061319c565b6000612a9b826129e8565b905085612aa88289612585565b612ab2919061394d565b9350670de0b6b3a76400008412156111225760405163329e322960e21b8152600481018590526024016107b3565b6000610b0682600019613733565b60008060008312612b00576001612b04565b6000195b905061208e61201d85612b1686612733565b61277b565b60008060008312612b2d576001612b31565b6000195b905061208e61201d85612b4386612733565b612c59565b60608315612b57575081610f40565b825115612b675782518084602001fd5b8160405162461bcd60e51b81526004016107b39190613a57565b6000808213612bc25760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016107b3565b670c7d713b49da000082138015612be05750670f43fc2c04ee000082125b15612c0457670de0b6b3a7640000612bf783612c71565b81612205576122056138ea565b610b0682612d90565b919050565b600081831215612c4f5760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b60448201526064016107b3565b610f408284613926565b60008260018161275d670de0b6b3a764000086613975565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612cb257612cb26138ea565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215612dd157612dc8826a0c097ce7bc90715b34b9f160241b81612dc257612dc26138ea565b05612d90565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312612e1c5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312612e53576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312612e9b576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312612ed6576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312612f0d57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312612f4457690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312612f795768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312612fa457680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312612fd9576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f1775788937937831261300e576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312613042576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312613076576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161309f5761309f6138ea565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b038116811461314857600080fd5b50565b8035612c0d81613133565b6000806000806080858703121561316c57600080fd5b843561317781613133565b9350602085013561318781613133565b93969395505050506040820135916060013590565b918252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156131e3576131e36131aa565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613211576132116131aa565b604052919050565b600060a0828403121561322b57600080fd5b60405160a081016001600160401b038111828210171561324d5761324d6131aa565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b600060c0828403121561329a57600080fd5b50919050565b600080600080600061012086880312156132b957600080fd5b85356132c481613133565b945060208601356132d481613133565b9350604086013592506132ea8760608801613219565b91506101008601356001600160401b0381111561330657600080fd5b61331288828901613288565b9150509295509295909350565b6000806000806080858703121561333557600080fd5b843561334081613133565b9350602085013561335081613133565b92506040850135915060608501356001600160401b0381111561337257600080fd5b61337e87828801613288565b91505092959194509250565b600080600080600061012086880312156133a357600080fd5b85356133ae81613133565b945060208601356133be81613133565b935060408601359250606086013591506133db8760808801613219565b90509295509295909350565b6001600160a01b0391909116815260200190565b60008060006060848603121561341057600080fd5b835161341b81613133565b602085015190935061342c81613133565b604085015190925061343d81613133565b809150509250925092565b60006020828403121561345a57600080fd5b8135610f4081613133565b6001600160a01b039390931683526020830191909152604082015260600190565b60006001600160401b0382111561349f5761349f6131aa565b50601f01601f191660200190565b600082601f8301126134be57600080fd5b81356134d16134cc82613486565b6131e9565b8181528460208386010111156134e657600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0823603121561351557600080fd5b60405160c081016001600160401b038082118383101715613538576135386131aa565b816040528435915061354982613133565b818352602085013560208401526040850135915061356682613133565b8160408401526060850135915061357c82613133565b81606084015261358e6080860161314b565b608084015260a08501359150808211156135a757600080fd5b506135b4368286016134ad565b60a08301525092915050565b6000602082840312156135d257600080fd5b5051919050565b60005b838110156135f45781810151838201526020016135dc565b50506000910152565b600081518084526136158160208601602086016135d9565b601f01601f19169290920160200192915050565b60018060a01b038416815282602082015260606040820152600061365060608301846135fd565b95945050505050565b6000806040838503121561366c57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b0657610b0661367d565b8051612c0d81613133565b600061012082840312156136c457600080fd5b6136cc6131c0565b8251815260208301516020820152604083015160408201526136f0606084016136a6565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b80820260008212600160ff1b8414161561374f5761374f61367d565b8181058314821517610b0657610b0661367d565b6000808335601e1984360301811261377a57600080fd5b8301803591506001600160401b0382111561379457600080fd5b6020019150368190038213156137a957600080fd5b9250929050565b600581106137ce57634e487b7160e01b600052602160045260246000fd5b9052565b608081016137e082876137b0565b6001600160a01b039485166020830152929093166040840152606090920191909152919050565b80820180821115610b0657610b0661367d565b60006001820161382c5761382c61367d565b5060010190565b6060810161384182866137b0565b6001600160a01b0393909316602082015260400152919050565b60408152600061386e60408301856135fd565b90508260208301529392505050565b60006020828403121561388f57600080fd5b81516001600160401b038111156138a557600080fd5b8201601f810184136138b657600080fd5b80516138c46134cc82613486565b8181528560208385010111156138d957600080fd5b6136508260208301602086016135d9565b634e487b7160e01b600052601260045260246000fd5b60006001600160601b038381168061391a5761391a6138ea565b92169190910492915050565b81810360008312801583831316838312821617156139465761394661367d565b5092915050565b808201828112600083128015821682158216171561396d5761396d61367d565b505092915050565b8082028115828204841417610b0657610b0661367d565b60008261399b5761399b6138ea565b500490565b9283526020830191909152604082015260600190565b6000602082840312156139c857600080fd5b81518015158114610f4057600080fd5b6001600160a01b03929092168252602082015260400190565b60008251613a038184602087016135d9565b9190910192915050565b600082613a1c57613a1c6138ea565b600160ff1b821460001984141615613a3657613a3661367d565b500590565b6000600160ff1b8201613a5057613a5061367d565b5060000390565b602081526000610f4060208301846135fd56fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656405499aba408f669fb848399c146fad5bd604d50b15566bdc19e81c40922fab8dc372308269f6e4dd0b4f322160cf0edef154584a3ad62248d654ae846e3eb6e8a26469706673582212209c3ef49f3d71e10ef04b58bfb4f252bc97da3fbaa3efd0c9f9bdbf57096780fb64736f6c63430008110033",
675
+ "deployedBytecode": "0x6080604052600436106100605760003560e01c8063357d654014610065578063a000aaa91461009c578063abbc79d0146100af578063bf1bd434146100cf578063e15cc098146100ef578063f95308001461010f578063fdd71f4314610150575b600080fd5b34801561007157600080fd5b50610085610080366004613156565b610170565b60405161009392919061319c565b60405180910390f35b6100856100aa3660046132a0565b61024d565b3480156100bb57600080fd5b506100856100ca36600461331f565b610352565b3480156100db57600080fd5b506100856100ea366004613156565b610478565b3480156100fb57600080fd5b5061008561010a36600461338a565b61068d565b34801561011b57600080fd5b506101437f000000000000000000000000000000000000000000000000000000000000000081565b60405161009391906133e7565b34801561015c57600080fd5b5061008561016b36600461338a565b610898565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156101b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d891906133fb565b92505091506101e981338389610954565b6101f7888884848a8a610975565b90945092506001600160a01b0380891690881633600080516020613a948339815191526102238a610aef565b61022c89610b0c565b60405161023a92919061319c565b60405180910390a4505094509492505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b591906133fb565b925050915060006102c98284600189610b26565b90506102d98a8a84848c8c610dd7565b90955093506102eb6020870187613448565b6001600160a01b0316896001600160a01b0316336001600160a01b0316600080516020613ab48339815191528d6103218a610b0c565b61032e8c60200135610aef565b60405161033d93929190613465565b60405180910390a45050509550959350505050565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ba91906133fb565b92505091506103cb81338389610954565b60006103ed6103e2846103dd89613503565b610f1f565b8985858b6001610975565b945090506104078984836104008a613503565b6000610f47565b94506104166020870187613448565b6001600160a01b0316886001600160a01b0316336001600160a01b0316600080516020613ab48339815191528c61044c8c610aef565b6104558b610b0c565b60405161046493929190613465565b60405180910390a450505094509492505050565b600080600080866001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156104bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e091906133fb565b92505091506000826001600160a01b03166370a08231336040518263ffffffff1660e01b815260040161051391906133e7565b602060405180830381865afa158015610530573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055491906135c0565b9050876001600160a01b03166329910b118389610572338e8c61112e565b6040518463ffffffff1660e01b815260040161059093929190613629565b60408051808303816000875af11580156105ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d29190613659565b6040516370a0823160e01b81529095506001600160a01b03851691506370a08231906106029033906004016133e7565b602060405180830381865afa15801561061f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064391906135c0565b61064d9082613693565b94506001600160a01b03808a1690891633600080516020613a948339815191526106768b610b0c565b61067f8a610aef565b60405161046492919061319c565b6000806000866001600160a01b031663794052f3306040518263ffffffff1660e01b81526004016106be91906133e7565b61012060405180830381865afa1580156106dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070091906136b1565b90506000876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076691906133fb565b9250505061078961077f826001600160a01b0316611160565b83908942896111c6565b5090945050858411156107bc57838660405163570cfb8160e01b81526004016107b392919061319c565b60405180910390fd5b6107c881338387610954565b876001600160a01b0316635b709f1782866107e38d8c61131b565b6040518463ffffffff1660e01b815260040161080193929190613629565b60408051808303816000875af115801561081f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108439190613659565b9350506001600160a01b03808a1690891633600080516020613a9483398151915261086d88610aef565b6108768c610b0c565b60405161088492919061319c565b60405180910390a450509550959350505050565b600080600080876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090091906133fb565b92505091506109118233838a610954565b61091f8989838a8a8a610dd7565b90945092506001600160a01b03808a1690891633600080516020613a9483398151915261094b88610b0c565b6108768c610aef565b801561096f5761096f6001600160a01b03851684848461134a565b50505050565b6000806000866001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016109a691906133e7565b602060405180830381865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e791906135c0565b9050876001600160a01b0316635b709f178787610a048d8961131b565b6040518463ffffffff1660e01b8152600401610a2293929190613629565b60408051808303816000875af1158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190613659565b6040516370a0823160e01b81529093508291506001600160a01b038916906370a0823190610a96908d906004016133e7565b602060405180830381865afa158015610ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad791906135c0565b610ae19190613693565b925050965096945050505050565b6000610afa82610b0c565b610b0690600019613733565b92915050565b60006001600160ff1b03821115610b2257600080fd5b5090565b6000610b43610b386020840184613448565b3384602001356113b5565b6000610b556060840160408501613448565b6001600160a01b0316610b6b6020850185613448565b6001600160a01b03161415905060008115610c0b57610bec610b906020860186613448565b6020860135610ba560a0880160808901613448565b610bb260a0890189613763565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142192505050565b610c04610bff6060860160408701613448565b61152b565b9050610c12565b5060208301355b6000610c246080860160608701613448565b6001600160a01b031614610ce457610c5b610c456060860160408701613448565b610c556080870160608801613448565b836115b5565b610c6b6080850160608601613448565b6001600160a01b031663b27670708883886040518463ffffffff1660e01b8152600401610c9a93929190613465565b6020604051808303816000875af1158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd91906135c0565b9250610dcd565b600080610cf76060870160408801613448565b6001600160a01b031614610d0c576000610d0e565b815b9050610d29610d236060870160408801613448565b88611679565b6001600160a01b0387166320e8c565828a610d4a60608a0160408b01613448565b6040516001600160e01b031960e086901b1681526001600160a01b0392831660048201529116602482015260448101869052606481018a905260840160206040518083038185885af1158015610da4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610dc991906135c0565b9350505b5050949350505050565b6000806000876001600160a01b031663794052f3306040518263ffffffff1660e01b8152600401610e0891906133e7565b61012060405180830381865afa158015610e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a91906136b1565b9050610e6b610e61886001600160a01b0316611160565b8290884288611731565b50925084831015610e9357828560405163a59b8c3160e01b81526004016107b392919061319c565b876001600160a01b03166329910b118885610eae8d8a61187a565b6040518463ffffffff1660e01b8152600401610ecc93929190613629565b60408051808303816000875af1158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e9190613659565b939a93995092975050505050505050565b60608101516000906001600160a01b0316610f3a5782610f40565b81606001515b9392505050565b60008115610f6457610f648533610f5e8887610f1f565b87610954565b825160408401516001600160a01b0390811691161415600081610f875787610f89565b305b60608601519091506000906001600160a01b0316156110215785606001516001600160a01b031663bd5688d5838960006040518463ffffffff1660e01b8152600401610fd793929190613465565b6020604051808303816000875af1158015610ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101a91906135c0565b90506110b3565b604086810151905163769f8e5d60e01b81526001600160a01b038481166004830152602482018a9052918216604482015260006064820152600160848201529089169063769f8e5d9060a4016020604051808303816000875af115801561108c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b091906135c0565b90505b82156110f2576110d186604001518288608001518960a00151611421565b85516110dc9061152b565b93506110ed86600001518a866115b5565b6110f6565b8093505b856020015184101561112257602086015160405163c5b5576d60e01b81526107b391869160040161319c565b50505095945050505050565b6060600084848460405160200161114894939291906137d2565b60405160208183030381529060405290509392505050565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af11580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0691906135c0565b60408051608081018252868152602081018690529081018490526060810183905260009081908190816111fa8a8a89611892565b9050600061121b8760006112168587600001516000015161198c565b611a34565b905060005b81606001518110156112f65760006112388383611b3c565b9050600080611251876000015187896020015186611ba8565b5091509150600061126f838960200151611bfc90919063ffffffff16565b9050600061128b6112808387613693565b60208b015190611c11565b9050886040015181106112d25760208701859052604089015160808801516112b4918391611c1d565b156112cd57939a50929850965061131095505050505050565b6112e0565b6112dd856001613807565b87525b5050505050806112ef9061381a565b9050611220565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b60606002838360405160200161133393929190613833565b604051602081830303815290604052905092915050565b6040516001600160a01b038085166024830152831660448201526064810182905261096f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611c50565b6001600160a01b038316611406578034146114015760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b60448201526064016107b3565b505050565b8015611401576114016001600160a01b03841683308461134a565b6001600160a01b038216158061143657508051155b1561145457604051631e59c84360e01b815260040160405180910390fd5b61145e8483611679565b60405163726d379760e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e4da6f2e906114af908590889060040161385b565b600060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114f4919081019061387d565b9050611523816001600160a01b03871615611510576000611512565b855b6001600160a01b0386169190611d22565b505050505050565b60006001600160a01b038216156115ae576040516370a0823160e01b81526001600160a01b038316906370a08231906115689030906004016133e7565b602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a991906135c0565b610b06565b4792915050565b806000036115c257505050565b6001600160a01b038316611665576000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461161d576040519150601f19603f3d011682016040523d82523d6000602084013e611622565b606091505b505090508061096f5760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b60448201526064016107b3565b6114016001600160a01b0384168383611d48565b6001600160a01b03821661168b575050565b61169d60026001600160601b03613900565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa1580156116f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171a91906135c0565b101561172d5761172d8282600019611d67565b5050565b604080516080810182528681526020810186905290810184905260608101839052600090819081611763898988611892565b905060006117988661178685604001518660200151611e7b90919063ffffffff16565b6117938560200151611e87565b611e9e565b905060005b81606001518110156112f6576000806117c0848688600001516000015186611f41565b91509150816117d457602084015250611860565b6000806117eb8860000151888a6020015186611fac565b509150915060006118108960400151846118059190613807565b60208b015190611e7b565b90508084116118525783875260808701516000906118319086908490611fd2565b9050801561184c575092995097506118709650505050505050565b5061185a565b602087018490525b50505050505b6118698161381a565b905061179d565b9550959350505050565b60606001838360405160200161133393929190613833565b6118bd6040518060800160405280600081526020016000815260200160008152602001600081525090565b60a084015182106118e15760405163b2094b5960e01b815260040160405180910390fd5b6000828560a001516118f39190613693565b90506118ff8582612000565b82526020850151611911908590612061565b60208301528451158061192657506020820151155b1561194d578451602083015160405163b1c4aefb60e01b81526107b392919060040161319c565b61196b85600001518661010001518460200151856000015185612098565b604083015260c085015161197f9082612119565b6060830152509392505050565b6000806119b96119b48560000151866040015187606001516119ae9190613926565b9061214d565b612170565b905060006119d96119d2670de0b6b3a76400008461394d565b8390612585565b905060006119f78660200151866119f0919061394d565b839061214d565b90506000611a058287613926565b90506103e8611a13826125ab565b611a1f906103e7613975565b611a29919061398c565b979650505050505050565b611a666040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b602084015184511180611a845750670de0b6b3a76400008460800151115b15611ab157835160208501516080860151604051632cc06bc160e21b81526107b3939291906004016139a0565b8351611abd90846125ba565b81526020840151611ace90836125d0565b6020820181905281511115611b14578351602085015160405163143e763760e31b81526004810192909252602482015260448101849052606481018390526084016107b3565b6040808501519082015260608085015190820152608093840151938101939093525090919050565b600081158015611b4f5750604083015115155b15611b5f57506040820151610b06565b6020830151835111611b8f5760208301518351600291611b7e91613807565b611b88919061398c565b9050610b06565b604051637d388ed960e11b815260040160405180910390fd5b600080600080600080611bc88989611bbf8a610b0c565b8d9291906125df565b925092509250611bd783612733565b9550611be2826125ab565b9450611bed816125ab565b93505050509450945094915050565b600082611c098184612745565b949350505050565b6000610f40838361277b565b6000828410158015611c095750611c4583611c4084670de0b6b3a7640000613807565b612790565b841115949350505050565b6000611ca5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127b09092919063ffffffff16565b8051909150156114015780806020019051810190611cc391906139b6565b6114015760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107b3565b6060611c09848484604051806060016040528060298152602001613a6b602991396127bb565b6114018363a9059cbb60e01b848460405160240161137e9291906139d8565b600080846001600160a01b031663095ea7b360e01b8585604051602401611d8f9291906139d8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611dcd91906139f1565b6000604051808303816000865af19150503d8060008114611e0a576040519150601f19603f3d011682016040523d82523d6000602084013e611e0f565b606091505b5091509150818015611e39575080511580611e39575080806020019051810190611e3991906139b6565b611e745760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b60448201526064016107b3565b5050505050565b6000610f4083836128e1565b60006001611e94836125ab565b610b069190613693565b611ed76040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8351611ee390846125ba565b81526020840151611ef490836125d0565b6020820181905281511180611f145750670de0b6b3a76400008460800151115b15611b1457835160208501516080860151604051632cc06bc160e21b81526107b3939291906004016139a0565b6000806000611f508785611b3c565b90508660a001518111611f6857600192509050611fa3565b6000611f7d8787611f7885610b0c565b6128f6565b90506000811215611f945750600092509050611fa3565b5060a087018190526001925090505b94509492505050565b600080600080600080611fc38989611bbf8a610aef565b925092509250611bd7836125ab565b6000828411158015611c095750611ff583611c4084670de0b6b3a7640000613693565b909310159392505050565b600061200b82610b0c565b61202261201d6201518061016d613975565b610b0c565b84608001516120319190613733565b61203b9190613a0d565b905060008113610b0657604051630e520c3b60e11b8152600481018290526024016107b3565b60008060008312612073576001612077565b6000195b905061208e61201d8561208986612733565b6128e1565b611c099082613733565b6000806120a58684612119565b9050670de0b6b3a76400008112156120d35760405163329e322960e21b8152600481018290526024016107b3565b60006120e96120e2878a61394d565b8990612585565b905060006120f6826129e8565b90506121028187612585565b61210c9084613926565b9998505050505050505050565b60008061212b6201518061016d613975565b6121358486613975565b61213f919061398c565b9050611c096119b482610b0c565b60008061215a8385613733565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015612195575068070c1cc73b00c800008213155b6121d45760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016107b3565b600082121561220c576121e982600003612170565b6a0c097ce7bc90715b34b9f160241b81612205576122056138ea565b0592915050565b60006806f05b59d3b2000000831261224a57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b612280565b6803782dace9d9000000831261227c57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380612280565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126122d05768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261230c576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261234657682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412612380576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126123b957680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126123f25768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261242b576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126124645768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b60008061259a670de0b6b3a764000085613733565b9050828181612167576121676138ea565b600080821215610b2257600080fd5b60008183116125c95781610f40565b5090919050565b60008183106125c95781610f40565b6000806000806126028860000151886020015189600001518a6040015189612a3b565b905060006126186126138784612585565b612ae0565b606089015190915060008713156126875760006126358483612585565b9050670de0b6b3a76400008112156126635760405163329e322960e21b8152600481018290526024016107b3565b61267f61267883670de0b6b3a7640000613926565b849061214d565b9150506126b4565b6126b18161269d81670de0b6b3a7640000613926565b6126a79085613733565b6126139190613a0d565b90505b600060646126c58c60e00151610b0c565b6126cf9084613733565b6126d99190613a0d565b905060006126e78385613926565b905060008112612700576126fb8a82612aee565b61270a565b61270a8a82612b1b565b97506127168a84612aee565b96506127228a83612aee565b955050505050509450945094915050565b6000808213610b22576115a982613a3b565b6000670de0b6b3a764000060018161275d8686613975565b6127679190613807565b6127719190613693565b610f40919061398c565b600082612771670de0b6b3a764000084613975565b60008061279d8385613975565b670de0b6b3a76400009004949350505050565b6060611c0984846000855b60608247101561281c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107b3565b6001600160a01b0385163b6128735760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107b3565b600080866001600160a01b0316858760405161288f91906139f1565b60006040518083038185875af1925050503d80600081146128cc576040519150601f19603f3d011682016040523d82523d6000602084013e6128d1565b606091505b5091509150611a29828286612b48565b6000670de0b6b3a76400006127718484613975565b6000808285602001516129099190613926565b90506000612917858561394d565b90506000821380156129295750600081135b61296a5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b60448201526064016107b3565b60006129986129798484613733565b6020890151612988908961394d565b6129929088613733565b90612585565b905060006129ae6129a98486612585565b612b81565b88519091506000906129c990670de0b6b3a764000090612585565b90506129d9816119ae8486613926565b896040015161210c9190613926565b6000670de0b6b3a76400008203612a125760405163a9c8b14d60e01b815260040160405180910390fd5b6000612a30612a2984670de0b6b3a7640000613926565b8490612585565b9050610f4081612b81565b600080612a488784612c12565b90506000612a596119d2888a61394d565b9050670d529ae9e8600000811315612a905780670d529ae9e8600000604051637e34684f60e11b81526004016107b392919061319c565b6000612a9b826129e8565b905085612aa88289612585565b612ab2919061394d565b9350670de0b6b3a76400008412156111225760405163329e322960e21b8152600481018590526024016107b3565b6000610b0682600019613733565b60008060008312612b00576001612b04565b6000195b905061208e61201d85612b1686612733565b61277b565b60008060008312612b2d576001612b31565b6000195b905061208e61201d85612b4386612733565b612c59565b60608315612b57575081610f40565b825115612b675782518084602001fd5b8160405162461bcd60e51b81526004016107b39190613a57565b6000808213612bc25760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016107b3565b670c7d713b49da000082138015612be05750670f43fc2c04ee000082125b15612c0457670de0b6b3a7640000612bf783612c71565b81612205576122056138ea565b610b0682612d90565b919050565b600081831215612c4f5760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b60448201526064016107b3565b610f408284613926565b60008260018161275d670de0b6b3a764000086613975565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612cb257612cb26138ea565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215612dd157612dc8826a0c097ce7bc90715b34b9f160241b81612dc257612dc26138ea565b05612d90565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312612e1c5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312612e53576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312612e9b576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312612ed6576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312612f0d57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312612f4457690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312612f795768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312612fa457680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312612fd9576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f1775788937937831261300e576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312613042576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312613076576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161309f5761309f6138ea565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b038116811461314857600080fd5b50565b8035612c0d81613133565b6000806000806080858703121561316c57600080fd5b843561317781613133565b9350602085013561318781613133565b93969395505050506040820135916060013590565b918252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156131e3576131e36131aa565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613211576132116131aa565b604052919050565b600060a0828403121561322b57600080fd5b60405160a081016001600160401b038111828210171561324d5761324d6131aa565b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b600060c0828403121561329a57600080fd5b50919050565b600080600080600061012086880312156132b957600080fd5b85356132c481613133565b945060208601356132d481613133565b9350604086013592506132ea8760608801613219565b91506101008601356001600160401b0381111561330657600080fd5b61331288828901613288565b9150509295509295909350565b6000806000806080858703121561333557600080fd5b843561334081613133565b9350602085013561335081613133565b92506040850135915060608501356001600160401b0381111561337257600080fd5b61337e87828801613288565b91505092959194509250565b600080600080600061012086880312156133a357600080fd5b85356133ae81613133565b945060208601356133be81613133565b935060408601359250606086013591506133db8760808801613219565b90509295509295909350565b6001600160a01b0391909116815260200190565b60008060006060848603121561341057600080fd5b835161341b81613133565b602085015190935061342c81613133565b604085015190925061343d81613133565b809150509250925092565b60006020828403121561345a57600080fd5b8135610f4081613133565b6001600160a01b039390931683526020830191909152604082015260600190565b60006001600160401b0382111561349f5761349f6131aa565b50601f01601f191660200190565b600082601f8301126134be57600080fd5b81356134d16134cc82613486565b6131e9565b8181528460208386010111156134e657600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0823603121561351557600080fd5b60405160c081016001600160401b038082118383101715613538576135386131aa565b816040528435915061354982613133565b818352602085013560208401526040850135915061356682613133565b8160408401526060850135915061357c82613133565b81606084015261358e6080860161314b565b608084015260a08501359150808211156135a757600080fd5b506135b4368286016134ad565b60a08301525092915050565b6000602082840312156135d257600080fd5b5051919050565b60005b838110156135f45781810151838201526020016135dc565b50506000910152565b600081518084526136158160208601602086016135d9565b601f01601f19169290920160200192915050565b60018060a01b038416815282602082015260606040820152600061365060608301846135fd565b95945050505050565b6000806040838503121561366c57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b0657610b0661367d565b8051612c0d81613133565b600061012082840312156136c457600080fd5b6136cc6131c0565b8251815260208301516020820152604083015160408201526136f0606084016136a6565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b80820260008212600160ff1b8414161561374f5761374f61367d565b8181058314821517610b0657610b0661367d565b6000808335601e1984360301811261377a57600080fd5b8301803591506001600160401b0382111561379457600080fd5b6020019150368190038213156137a957600080fd5b9250929050565b600581106137ce57634e487b7160e01b600052602160045260246000fd5b9052565b608081016137e082876137b0565b6001600160a01b039485166020830152929093166040840152606090920191909152919050565b80820180821115610b0657610b0661367d565b60006001820161382c5761382c61367d565b5060010190565b6060810161384182866137b0565b6001600160a01b0393909316602082015260400152919050565b60408152600061386e60408301856135fd565b90508260208301529392505050565b60006020828403121561388f57600080fd5b81516001600160401b038111156138a557600080fd5b8201601f810184136138b657600080fd5b80516138c46134cc82613486565b8181528560208385010111156138d957600080fd5b6136508260208301602086016135d9565b634e487b7160e01b600052601260045260246000fd5b60006001600160601b038381168061391a5761391a6138ea565b92169190910492915050565b81810360008312801583831316838312821617156139465761394661367d565b5092915050565b808201828112600083128015821682158216171561396d5761396d61367d565b505092915050565b8082028115828204841417610b0657610b0661367d565b60008261399b5761399b6138ea565b500490565b9283526020830191909152604082015260600190565b6000602082840312156139c857600080fd5b81518015158114610f4057600080fd5b6001600160a01b03929092168252602082015260400190565b60008251613a038184602087016135d9565b9190910192915050565b600082613a1c57613a1c6138ea565b600160ff1b821460001984141615613a3657613a3661367d565b500590565b6000600160ff1b8201613a5057613a5061367d565b5060000390565b602081526000610f4060208301846135fd56fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656405499aba408f669fb848399c146fad5bd604d50b15566bdc19e81c40922fab8dc372308269f6e4dd0b4f322160cf0edef154584a3ad62248d654ae846e3eb6e8a26469706673582212209c3ef49f3d71e10ef04b58bfb4f252bc97da3fbaa3efd0c9f9bdbf57096780fb64736f6c63430008110033",
676
676
  "linkReferences": {},
677
677
  "deployedLinkReferences": {}
678
678
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/3a6d5ca548469b1a92b8c9110bb006bc.json"
3
+ "buildInfo": "../../../../build-info/c903e44682e9984e8b43d3e35c278579.json"
4
4
  }
@@ -120,16 +120,6 @@ contract BulkSeller is IPBulkSeller, Initializable, TokenHelper, ReentrancyGuard
120
120
  emit SwapExactSyForToken(receiver, exactSyIn, netTokenOut);
121
121
  }
122
122
 
123
- function calcSwapExactTokenForSy(uint256 netTokenIn) external view returns (uint256 netSyOut) {
124
- assert(_storage.rateTokenToSy != 0);
125
- netSyOut = netTokenIn.mulDown(_storage.rateTokenToSy);
126
- }
127
-
128
- function calcSwapExactSyForToken(uint256 netSyIn) external view returns (uint256 netTokenOut) {
129
- assert(_storage.rateSyToToken != 0);
130
- netTokenOut = netSyIn.mulDown(_storage.rateSyToToken);
131
- }
132
-
133
123
  function readState() public view returns (BulkSellerState memory state) {
134
124
  BulkSellerStorage storage s = _storage;
135
125
 
@@ -16,10 +16,6 @@ interface IPBulkSeller {
16
16
  uint256 minSyOut
17
17
  ) external returns (uint256 netSyOut);
18
18
 
19
- function calcSwapExactTokenForSy(uint256 netTokenIn) external view returns (uint256 netSyOut);
20
-
21
- function calcSwapExactSyForToken(uint256 netSyIn) external view returns (uint256 netTokenOut);
22
-
23
19
  function SY() external view returns (address);
24
20
 
25
21
  function token() external view returns (address);
@@ -20,6 +20,7 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
20
20
  using Math for uint256;
21
21
  using VeBalanceLib for VeBalance;
22
22
  using VeBalanceLib for LockedPosition;
23
+ using BulkSellerMathCore for BulkSellerState;
23
24
 
24
25
  uint128 public constant MAX_LOCK_TIME = 104 weeks;
25
26
  uint128 public constant MIN_LOCK_TIME = 1 weeks;
@@ -733,7 +734,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
733
734
  address bulk
734
735
  ) public view returns (uint256 amountSy) {
735
736
  if (bulk != address(0)) {
736
- return IPBulkSeller(bulk).calcSwapExactTokenForSy(amountToken);
737
+ BulkSellerState memory state = IPBulkSeller(bulk).readState();
738
+ return state.calcSwapExactTokenForSy(amountToken);
737
739
  } else {
738
740
  return SY.previewDeposit(baseToken, amountToken);
739
741
  }
@@ -746,7 +748,8 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
746
748
  address bulk
747
749
  ) public view returns (uint256 amountBaseToken) {
748
750
  if (bulk != address(0)) {
749
- return IPBulkSeller(bulk).calcSwapExactSyForToken(amountSy);
751
+ BulkSellerState memory state = IPBulkSeller(bulk).readState();
752
+ return state.calcSwapExactSyForToken(amountSy);
750
753
  } else {
751
754
  return SY.previewRedeem(baseToken, amountSy);
752
755
  }
@@ -858,4 +861,39 @@ contract RouterStatic is Initializable, BoringOwnableUpgradeable, UUPSUpgradeabl
858
861
  }
859
862
  }
860
863
  }
864
+
865
+ function getBulkSellerInfo(
866
+ address token,
867
+ address SY,
868
+ uint256 netTokenIn,
869
+ uint256 netSyIn
870
+ )
871
+ external
872
+ view
873
+ returns (
874
+ address bulk,
875
+ uint256 totalToken,
876
+ uint256 totalSy
877
+ )
878
+ {
879
+ bulk = IPBulkSellerFactory(bulkFactory).get(token, SY);
880
+ if (bulk != address(0)) {
881
+ BulkSellerState memory state = IPBulkSeller(bulk).readState();
882
+ if (state.rateTokenToSy != 0 || state.rateSyToToken != 0) {
883
+ totalToken = state.totalToken;
884
+ totalSy = state.totalSy;
885
+ }
886
+
887
+ uint256 postFeeRateTokenToSy = state.rateTokenToSy.mulDown(Math.ONE - state.feeRate);
888
+ uint256 postFeeRateSyToToken = state.rateSyToToken.mulDown(Math.ONE - state.feeRate);
889
+ if (
890
+ netTokenIn.mulDown(postFeeRateTokenToSy) > state.totalSy ||
891
+ netSyIn.mulDown(postFeeRateSyToToken) > state.totalToken
892
+ ) {
893
+ bulk = address(0);
894
+ totalToken = 0;
895
+ totalSy = 0;
896
+ }
897
+ }
898
+ }
861
899
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@pendle/core-v2",
3
3
  "description": "Core smart contracts of Pendle Protocol.",
4
4
  "license": "BUSL-1.1",
5
- "version": "0.17.0-testnet",
5
+ "version": "0.17.1-testnet",
6
6
  "homepage": "https://pendle.finance",
7
7
  "keywords": [
8
8
  "pendle",
@@ -44,7 +44,7 @@
44
44
  },
45
45
  "packageManager": "yarn@3.2.2",
46
46
  "dependencies": {
47
- "@openzeppelin/contracts": "^4.7.3",
48
- "@openzeppelin/contracts-upgradeable": "^4.7.3"
47
+ "@openzeppelin/contracts": "4.7.3",
48
+ "@openzeppelin/contracts-upgradeable": "4.7.3"
49
49
  }
50
50
  }
@@ -50,8 +50,6 @@ export interface BulkSellerInterface extends utils.Interface {
50
50
  functions: {
51
51
  "SY()": FunctionFragment;
52
52
  "_storage()": FunctionFragment;
53
- "calcSwapExactSyForToken(uint256)": FunctionFragment;
54
- "calcSwapExactTokenForSy(uint256)": FunctionFragment;
55
53
  "decreaseReserve(uint256,uint256)": FunctionFragment;
56
54
  "factory()": FunctionFragment;
57
55
  "feeRate()": FunctionFragment;
@@ -68,14 +66,6 @@ export interface BulkSellerInterface extends utils.Interface {
68
66
 
69
67
  encodeFunctionData(functionFragment: "SY", values?: undefined): string;
70
68
  encodeFunctionData(functionFragment: "_storage", values?: undefined): string;
71
- encodeFunctionData(
72
- functionFragment: "calcSwapExactSyForToken",
73
- values: [BigNumberish]
74
- ): string;
75
- encodeFunctionData(
76
- functionFragment: "calcSwapExactTokenForSy",
77
- values: [BigNumberish]
78
- ): string;
79
69
  encodeFunctionData(
80
70
  functionFragment: "decreaseReserve",
81
71
  values: [BigNumberish, BigNumberish]
@@ -115,14 +105,6 @@ export interface BulkSellerInterface extends utils.Interface {
115
105
 
116
106
  decodeFunctionResult(functionFragment: "SY", data: BytesLike): Result;
117
107
  decodeFunctionResult(functionFragment: "_storage", data: BytesLike): Result;
118
- decodeFunctionResult(
119
- functionFragment: "calcSwapExactSyForToken",
120
- data: BytesLike
121
- ): Result;
122
- decodeFunctionResult(
123
- functionFragment: "calcSwapExactTokenForSy",
124
- data: BytesLike
125
- ): Result;
126
108
  decodeFunctionResult(
127
109
  functionFragment: "decreaseReserve",
128
110
  data: BytesLike
@@ -282,16 +264,6 @@ export interface BulkSeller extends BaseContract {
282
264
  }
283
265
  >;
284
266
 
285
- calcSwapExactSyForToken(
286
- netSyIn: BigNumberish,
287
- overrides?: CallOverrides
288
- ): Promise<[BigNumber] & { netTokenOut: BigNumber }>;
289
-
290
- calcSwapExactTokenForSy(
291
- netTokenIn: BigNumberish,
292
- overrides?: CallOverrides
293
- ): Promise<[BigNumber] & { netSyOut: BigNumber }>;
294
-
295
267
  decreaseReserve(
296
268
  netTokenOut: BigNumberish,
297
269
  netSyOut: BigNumberish,
@@ -369,16 +341,6 @@ export interface BulkSeller extends BaseContract {
369
341
  }
370
342
  >;
371
343
 
372
- calcSwapExactSyForToken(
373
- netSyIn: BigNumberish,
374
- overrides?: CallOverrides
375
- ): Promise<BigNumber>;
376
-
377
- calcSwapExactTokenForSy(
378
- netTokenIn: BigNumberish,
379
- overrides?: CallOverrides
380
- ): Promise<BigNumber>;
381
-
382
344
  decreaseReserve(
383
345
  netTokenOut: BigNumberish,
384
346
  netSyOut: BigNumberish,
@@ -452,16 +414,6 @@ export interface BulkSeller extends BaseContract {
452
414
  }
453
415
  >;
454
416
 
455
- calcSwapExactSyForToken(
456
- netSyIn: BigNumberish,
457
- overrides?: CallOverrides
458
- ): Promise<BigNumber>;
459
-
460
- calcSwapExactTokenForSy(
461
- netTokenIn: BigNumberish,
462
- overrides?: CallOverrides
463
- ): Promise<BigNumber>;
464
-
465
417
  decreaseReserve(
466
418
  netTokenOut: BigNumberish,
467
419
  netSyOut: BigNumberish,
@@ -611,16 +563,6 @@ export interface BulkSeller extends BaseContract {
611
563
 
612
564
  _storage(overrides?: CallOverrides): Promise<BigNumber>;
613
565
 
614
- calcSwapExactSyForToken(
615
- netSyIn: BigNumberish,
616
- overrides?: CallOverrides
617
- ): Promise<BigNumber>;
618
-
619
- calcSwapExactTokenForSy(
620
- netTokenIn: BigNumberish,
621
- overrides?: CallOverrides
622
- ): Promise<BigNumber>;
623
-
624
566
  decreaseReserve(
625
567
  netTokenOut: BigNumberish,
626
568
  netSyOut: BigNumberish,
@@ -686,16 +628,6 @@ export interface BulkSeller extends BaseContract {
686
628
 
687
629
  _storage(overrides?: CallOverrides): Promise<PopulatedTransaction>;
688
630
 
689
- calcSwapExactSyForToken(
690
- netSyIn: BigNumberish,
691
- overrides?: CallOverrides
692
- ): Promise<PopulatedTransaction>;
693
-
694
- calcSwapExactTokenForSy(
695
- netTokenIn: BigNumberish,
696
- overrides?: CallOverrides
697
- ): Promise<PopulatedTransaction>;
698
-
699
631
  decreaseReserve(
700
632
  netTokenOut: BigNumberish,
701
633
  netSyOut: BigNumberish,