h-agent-swap 1.2.5 → 1.2.6

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "h-agent-swap",
3
- "version": "1.2.5",
3
+ "version": "1.2.6",
4
4
  "description": "agent-swap",
5
5
  "main": "src/index.js",
6
6
  "files": [
@@ -804,6 +804,11 @@
804
804
  "internalType": "uint256",
805
805
  "name": "tax",
806
806
  "type": "uint256"
807
+ },
808
+ {
809
+ "internalType": "uint256",
810
+ "name": "backBuy",
811
+ "type": "uint256"
807
812
  }
808
813
  ],
809
814
  "stateMutability": "view",
@@ -964,6 +969,11 @@
964
969
  "internalType": "uint256",
965
970
  "name": "tax",
966
971
  "type": "uint256"
972
+ },
973
+ {
974
+ "internalType": "uint256",
975
+ "name": "backBuy",
976
+ "type": "uint256"
967
977
  }
968
978
  ],
969
979
  "internalType": "struct TokenMarket.TaxConfig",
@@ -1040,8 +1050,8 @@
1040
1050
  "type": "receive"
1041
1051
  }
1042
1052
  ],
1043
- "bytecode": "0x60806040526305f5e1006009553480156200001957600080fd5b5060405162004e8938038062004e898339810160408190526200003c91620001ef565b620000473362000079565b60018055600280546001600160a01b0319166001600160a01b0384161790556200007181620000c9565b50506200024c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166200012f5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b606482015260840160405180910390fd5b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001af919062000227565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b80516001600160a01b0381168114620001ea57600080fd5b919050565b600080604083850312156200020357600080fd5b6200020e83620001d2565b91506200021e60208401620001d2565b90509250929050565b6000602082840312156200023a57600080fd5b6200024582620001d2565b9392505050565b614c2d806200025c6000396000f3fe6080604052600436106101825760003560e01c80635ff530f2116100d557806381f3fdc311610084578063aa5d448f11610061578063aa5d448f146105ad578063d96661ef146105cd578063f2fde38b146105ed578063fe8691b41461060d57005b806381f3fdc31461054d5780638da5cb5b1461057c578063a6a3694a1461059a57005b80636f151a38116100b25780636f151a38146104f8578063715018a614610518578063744cfdd91461052d57005b80635ff530f21461048757806362a76603146104a757806363c102b4146104d857005b8063238ac9331161013157806334e3f92d1161010e57806334e3f92d146103fc5780633fc8cef3146104475780635c8181211461046757005b8063238ac933146102ab5780632926e5de146102e35780632bd2c18d146103dc57005b80630fcc40c41161015f5780630fcc40c41461023e5780631b1534011461026b5780631f8c24de1461028b57005b8063016eb8a81461018b578063089afeae146101be5780630d83b1e41461022857005b3661018957005b005b34801561019757600080fd5b506101ab6101a6366004613de9565b610661565b6040519081526020015b60405180910390f35b3480156101ca57600080fd5b506102096101d9366004613e30565b6008602090815260009283526040808420909152908252902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016101b5565b34801561023457600080fd5b506101ab60095481565b34801561024a57600080fd5b5061025e610259366004613f8b565b610682565b6040516101b5919061400c565b34801561027757600080fd5b5061018961028636600461401f565b610752565b34801561029757600080fd5b506101896102a63660046140d0565b61080d565b3480156102b757600080fd5b506002546102cb906001600160a01b031681565b6040516001600160a01b0390911681526020016101b5565b3480156102ef57600080fd5b506103726102fe366004613e30565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e0850152610100840152610120830152610140820152610160810191909152610180016101b5565b3480156103e857600080fd5b506101ab6103f736600461413d565b61088d565b34801561040857600080fd5b50610437610417366004614194565b805160208183018101805160038252928201919093012091525460ff1681565b60405190151581526020016101b5565b34801561045357600080fd5b506004546102cb906001600160a01b031681565b34801561047357600080fd5b506101ab6104823660046141d7565b6108e2565b34801561049357600080fd5b506101ab6104a2366004614210565b61092a565b3480156104b357600080fd5b506104c76104c2366004614257565b610a6e565b6040516101b5959493929190614369565b3480156104e457600080fd5b506101896104f33660046143f7565b610b34565b34801561050457600080fd5b50610189610513366004614512565b610d45565b34801561052457600080fd5b50610189610dab565b34801561053957600080fd5b506101ab610548366004614210565b610e11565b34801561055957600080fd5b5061056d61056836600461452f565b610f3b565b6040516101b593929190614591565b34801561058857600080fd5b506000546001600160a01b03166102cb565b6101896105a83660046145b3565b61130b565b3480156105b957600080fd5b506101896105c8366004614512565b611648565b3480156105d957600080fd5b506005546102cb906001600160a01b031681565b3480156105f957600080fd5b50610189610608366004614512565b6116ab565b34801561061957600080fd5b5061064c610628366004613e30565b60066020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101b5565b60095460009061067b90610675858561178a565b9061179c565b9392505050565b805160609060008167ffffffffffffffff8111156106a2576106a2613e69565b6040519080825280602002602001820160405280156106cb578160200160208202803683370190505b5090506000825b6001811061074857856106e6600183614647565b815181106106f6576106f661465e565b60200260200101518383815181106107105761071061465e565b6001600160a01b0390921660209283029190910190910152816107328161468d565b9250508080610740906146a7565b9150506106d2565b5090949350505050565b6000546001600160a01b031633146107b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107bc8383836117a8565b6108085760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c0000000000000000000060448201526064016107a8565b505050565b6108156117df565b6108228585858585611838565b61082e85858584611a24565b81421061087d5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e00000060448201526064016107a8565b61088660018055565b5050505050565b600080808481036108ba576108a2878761092a565b91506108b0848360006108e2565b91508192506108d8565b6108c48787610e11565b90506108d2848260016108e2565b90508092505b5050949350505050565b600060018215610900576009546108f99086611a93565b9050610910565b60095461090d9086611a9f565b90505b60095461092190610675868461178a565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f9061097a90879087906004016146be565b600060405180830381865afa158015610997573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109bf91908101906146d7565b9050806109d760018351611a9f90919063ffffffff16565b815181106109e7576109e761465e565b6020026020010151915060008211610a675760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e2030000000000000000000000000000000000060648201526084016107a8565b5092915050565b610ae460405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600080600080600080610af98c8c8c8c611aab565b92995090945092509050610b0d8984611a9f565b9850610b1d8c8c8b8b8686611e8f565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610b8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b600082606001511215610be35760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d2030000000000000000060448201526064016107a8565b600082602001511215610c385760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d20300000000000000060448201526064016107a8565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825583890151600180840191909155838a0151600284018054918e1691841691909117905560608a0151600384015560808a0151600484015560a08a0151600584015560c08a0151600684015560e08a0151958301959095556101008901516008808401919091556101208a015160098401556101408a0151600a84015561016090990151600b909201919091559484529581528583209683529586529390208251815496169590911694909417845590910151910155565b6000546001600160a01b03163314610d9f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b610da881612115565b50565b6000546001600160a01b03163314610e055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b610e0f60006121ca565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca7490610e6190879087906004016146be565b600060405180830381865afa158015610e7e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ea691908101906146d7565b905080600081518110610ebb57610ebb61465e565b6020026020010151915060008211610a675760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e203000000000000000000000000000000000000060648201526084016107a8565b610fb160405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa1580156110ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d19190614768565b60ff1691506110ea6110e483600a61486f565b8561092a565b9050600080828560800151111561113c5761012085015160808601516009546111138683614647565b61111d919061487b565b611127919061489a565b611131919061489a565b905060009150611185565b84608001518311156111855761012085015160808601516009546111608287614647565b61116a919061487b565b611174919061489a565b61117e919061489a565b9050600191505b60008113156113005760808501839052610140850151610160860151836111bd576111af826148d5565b91506111ba816148d5565b90505b600082126112005760208701516111d4848461490d565b6111de91906149c9565b6020880181905260c088015112156111fb5760c087015160208801525b61125c565b86602001518760a001518461121485612232565b61121e919061490d565b61122891906149c9565b131561123d5760a0870151602088015261125c565b602087015161124c848461490d565b61125691906149c9565b60208801525b600081126112a1576060870151611273848361490d565b61127d91906149c9565b60608801819052610100880151121561129c5761010087015160608801525b6112fd565b86606001518760e00151846112b584612232565b6112bf919061490d565b6112c991906149c9565b13156112de5760e087015160608801526112fd565b60608701516112ed848361490d565b6112f791906149c9565b60608801525b50505b505093509350939050565b6113136117df565b3332146113625760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c6572000000000060448201526064016107a8565b333b156113d65760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c730000000000000000000000000000000000000000000000000000000060648201526084016107a8565b826000036113fd576113e8858761092a565b93506113f6818560006108e2565b9350611418565b6114078487610e11565b9450611415818660016108e2565b94505b60008660008151811061142d5761142d61465e565b60200260200101519050600087600189516114489190614647565b815181106114585761145861465e565b6020908102919091018101513360009081526006835260408082206001600160a01b038716835290935291822060010180549193508992909161149c908490614a3d565b92505081905550600060405180604001604052806114b98561224e565b8152602001846001600160a01b03168152509050600060405180604001604052806114e38561224e565b81526001600160a01b03851660209091015282519091506003036115125761150d8433308c612287565b611587565b8834146115875760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f637572617465000000000000000000000000000000000000000000000000000060648201526084016107a8565b61159284848c6123f7565b50506115a382828b8b8e8c8c612688565b60006115b085858b612931565b90506000806115c187878f8e612a6d565b50604080513381526001600160a01b03808c1660208301528a1691810191909152606081018f90526080810186905260a0810183905260c0810182905291935091507f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49060e00160405180910390a15050505050505061164060018055565b505050505050565b6000546001600160a01b031633146116a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b610da881612d2b565b6000546001600160a01b031633146117055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b6001600160a01b0381166117815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107a8565b610da8816121ca565b600061067b828461487b565b92915050565b600061067b828461489a565b60006001600160a01b0384166117ca576117c28383612e90565b50600161067b565b6117d5848484612fa9565b5060019392505050565b6002600154036118315760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107a8565b6002600155565b6003816040516118489190614a85565b9081526040519081900360200190205460ff16156118a85760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a6365727469666963617465206578706972656460448201526064016107a8565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e88401526101048084019190915283518084039091018152610124909201909252805191012060009061196c9083613111565b6002549091506001600160a01b038083169116146119cc5760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c696420636572746966696361746560448201526064016107a8565b60016003836040516119de9190614a85565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b038316611a4157611a3c3383612e90565b611a4c565b611a4c833384612fa9565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d338585854286604051611a8596959493929190614aa1565b60405180910390a150505050565b600061067b8284614a3d565b600061067b8284614647565b611b2160405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa158015611c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c439190614768565b60ff169150611c5c611c5683600a61486f565b8761092a565b90506000808286608001511115611cae576101208601516080870151600954611c858683614647565b611c8f919061487b565b611c99919061489a565b611ca3919061489a565b905060009150611cf7565b8560800151831115611cf7576101208601516080870151600954611cd28287614647565b611cdc919061487b565b611ce6919061489a565b611cf0919061489a565b9050600191505b6000811315611e72576080860183905261014086015161016087015183611d2f57611d21826148d5565b9150611d2c816148d5565b90505b60008212611d72576020880151611d46848461490d565b611d5091906149c9565b6020890181905260c08901511215611d6d5760c088015160208901525b611dce565b87602001518860a0015184611d8685612232565b611d90919061490d565b611d9a91906149c9565b1315611daf5760a08801516020890152611dce565b6020880151611dbe848461490d565b611dc891906149c9565b60208901525b60008112611e13576060880151611de5848361490d565b611def91906149c9565b606089018190526101008901511215611e0e5761010088015160608901525b611e6f565b87606001518860e0015184611e2784612232565b611e31919061490d565b611e3b91906149c9565b1315611e505760e08801516060890152611e6f565b6060880151611e5f848361490d565b611e6991906149c9565b60608901525b50505b611e80878760200151610661565b94505050945094509450949050565b6001600160a01b03868116600090815260086020908152604080832089851680855290835281842082518084018452815487168152600191820154818601529589168552600684528285209185529252822090810154905491928392839211611f0757611f00888260200151610661565b93506120fc565b6001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054611f3e908a90614a3d565b10611f93576001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054611f009190611f7f908b90614a3d565b611f899190614647565b8260200151610661565b6000611fa087600a61486f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa158015612002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120269190614b04565b612030919061487b565b61203a919061489a565b6001600160a01b038981166000908152600660209081526040808320938f1683529290522060018101549054919250908290612077908c90614a3d565b6120819190614a3d565b10156120fa576001600160a01b038089166000908152600660209081526040808320938e168352929052205481906120ba908b90614a3d565b6120c49190614a3d565b6001600160a01b03808a166000908152600660209081526040808320938f16835292905220600101546120f79190614647565b93505b505b6121068885611a9f565b91505096509650969350505050565b6001600160a01b0381166121905760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107a8565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082121561224a57612245826148d5565b611796565b5090565b600060036001600160a01b03831661226857506001611796565b6004546001600160a01b03908116908416036117965750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916123199190614a85565b6000604051808303816000865af19150503d8060008114612356576040519150601f19603f3d011682016040523d82523d6000602084013e61235b565b606091505b50915091508180156123855750805115806123855750808060200190518101906123859190614b1d565b6116405760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c656400000000000000000000000000000060648201526084016107a8565b6001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce56700000000000000000000000000000000000000000000000000000000815290519395869590948694919363313ce5679380840193919291908290030181865afa1580156124f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251a9190614768565b60ff169050600061252f611c5683600a61486f565b90506000836101200151116125865760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e203000000060448201526064016107a8565b60008360800151116125da5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e7072696365203e203000000060448201526064016107a8565b80836080015111156126275761012083015160808401516009546125fe8483614647565b612608919061487b565b612612919061489a565b61261c919061489a565b945060009350612670565b826080015181111561267057610120830151608084015160095461264b8285614647565b612655919061487b565b61265f919061489a565b612669919061489a565b9450600193505b61267d8888838888613135565b505050935093915050565b86516003036126ad5760208701516005546126ad91906001600160a01b0316876134db565b865160031480156126bf575085516003145b80156126c9575081155b1561276c576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed17399061271f9088908890889030908890600401614b3a565b6000604051808303816000875af115801561273e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261276691908101906146d7565b50612928565b8651600314801561277e575085516003145b801561278a5750816001145b156127e0576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee9061271f9087908990889030908890600401614b3a565b865160031480156127fd57508551600214806127fd575085516001145b80156128095750816001145b1561285f576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a9061271f9087908990889030908890600401614b3a565b865160021480612870575086516001145b801561287d575085516003145b80156128895750816001145b15612928576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb419087906128df908890889030908890600401614b76565b60006040518083038185885af11580156128fd573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261292691908101906146d7565b505b50505050505050565b6001600160a01b0380841660009081526007602081815260408084208786168552825280842081516101808101835281548716815260018201549381018490526002820154909616918601919091526003810154606086015260048101546080860152600581015460a0860152600681015460c08601529182015460e085015260088201546101008501526009820154610120850152600a820154610140850152600b909101546101608401529091906129ec908490610661565b915060006040518060400160405280612a048761224e565b81526001600160a01b0387166020909101528051909150600303612a475781516001600160a01b03163014612a4257612a4285836000015185612fa9565b612a64565b81516001600160a01b03163014612a64578151612a649084613643565b50509392505050565b6001600160a01b038085166000908152600860209081526040808320878516845282528083208151808301909252805490941681526001909301549083015290819081908180612abf8a8a8a8a613726565b80935081945082995050505060066000336001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206001015460066000336001600160a01b03166001600160a01b0316815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206000015410612b7d57612b76878460200151610661565b9550612cb8565b3360009081526006602090815260408083206001600160a01b038d168452909152902060018101549054612bb2908990614a3d565b10612c05573360009081526006602090815260408083206001600160a01b038d168452909152902060018101549054612b769190612bf1908a90614a3d565b612bfb9190614647565b8460200151610661565b6000612c1282600a61486f565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015284906001600160a01b038e16906370a0823190602401602060405180830381865afa158015612c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c959190614b04565b612c9f919061487b565b612ca9919061489a565b9050612cb68a8983613a12565b505b612cc28787611a9f565b94508515612cd957612cd989846000015188612fa9565b612ce4893387612fa9565b3360009081526006602090815260408083206001600160a01b038d16845290915281208054879290612d17908490614a3d565b925050819055505050509450945094915050565b6001600160a01b038116612da75760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107a8565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015612e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e559190614bab565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b80471015612ee05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107a8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612f2d576040519150601f19603f3d011682016040523d82523d6000602084013e612f32565b606091505b50509050806108085760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107a8565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916130339190614a85565b6000604051808303816000865af19150503d8060008114613070576040519150601f19603f3d011682016040523d82523d6000602084013e613075565b606091505b509150915081801561309f57508051158061309f57508080602001905181019061309f9190614b1d565b6108865760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c65640000000000000000000000000000000000000060648201526084016107a8565b60008060006131208585613b7b565b9150915061312d81613bc0565b509392505050565b6000821315610886576001600160a01b03858116600090815260076020908152604080832093881683529290522060048101849055600a810154600b909101548261319157613183826148d5565b915061318e816148d5565b90505b60008212613242576001600160a01b038088166000908152600760209081526040808320938a16835292905220600101546131cc858461490d565b6131d691906149c9565b6001600160a01b038881166000908152600760209081526040808320938b168352929052206001810182905560060154121561323d576001600160a01b038781166000908152600760209081526040808320938a1683529290522060068101546001909101555b613332565b6001600160a01b038781166000908152600760209081526040808320938a1683529290522060018101546005909101548561327c85612232565b613286919061490d565b61329091906149c9565b13156132cb576001600160a01b038781166000908152600760209081526040808320938a168352929052206005810154600190910155613332565b6001600160a01b038088166000908152600760209081526040808320938a16835292905220600101546132fe858461490d565b61330891906149c9565b6001600160a01b038089166000908152600760209081526040808320938b16835292905220600101555b600081126133e3576001600160a01b038088166000908152600760209081526040808320938a168352929052206003015461336d858361490d565b61337791906149c9565b6001600160a01b038881166000908152600760209081526040808320938b16835292905220600381018290556008015412156133de576001600160a01b038781166000908152600760209081526040808320938a1683529290522060088101546003909101555b612928565b6001600160a01b038781166000908152600760208181526040808420948b16845293905291902060038101549101548561341c84612232565b613426919061490d565b61343091906149c9565b131561346c576001600160a01b038781166000908152600760208181526040808420948b16845293905291902090810154600390910155612928565b6001600160a01b038088166000908152600760209081526040808320938a168352929052206003015461349f858361490d565b6134a991906149c9565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015550505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916135659190614a85565b6000604051808303816000865af19150503d80600081146135a2576040519150601f19603f3d011682016040523d82523d6000602084013e6135a7565b606091505b50915091508180156135d15750805115806135d15750808060200190518101906135d19190614b1d565b6108865760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c656400000000000000000000000000000000000000000060648201526084016107a8565b604080516000808252602082019092526001600160a01b03841690839060405161366d9190614a85565b60006040518083038185875af1925050503d80600081146136aa576040519150601f19603f3d011682016040523d82523d6000602084013e6136af565b606091505b50509050806108085760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016107a8565b6001600160a01b0380851660009081526007602081815260408084208886168552825280842081516101808101835281548716815260018201549381019390935260028101549095169082015260038401546060820181905260048501546080830152600585015460a0830152600685015460c08301529184015460e082015260088401546101008201526009840154610120820152600a840154610140820152600b90930154610160840152909182918291906137e5908690610661565b60408083015190517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061386c9190614b04565b10156138e05760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e636500000000000000000000000000000000000060648201526084016107a8565b60006138f0868360600151610661565b11156139715761391281604001513361390d888560600151610661565b612fa9565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd338260400151613947888560600151610661565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a15b876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d39190614768565b60ff1691506139e6611c5683600a61486f565b925060006139f8868360200151610661565b9050613a048682611a9f565b945050509450945094915050565b3360009081526006602090815260408083206001600160a01b03871684529091529020600181015490548290613a49908590614a3d565b613a539190614a3d565b1015610808573360009081526006602090815260408083206001600160a01b03871684529091528120548290613a8a908590614a3d565b613a949190614a3d565b3360009081526006602090815260408083206001600160a01b0389168452909152902060010154613ac59190614647565b90508015613b06573360009081526006602090815260408083206001600160a01b038816845290915281208054839290613b00908490614a3d565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a001611a85565b6000808251604103613bb15760208301516040840151606085015160001a613ba587828585613d25565b94509450505050613bb9565b506000905060025b9250929050565b6000816004811115613bd457613bd4614bc8565b03613bdc5750565b6001816004811115613bf057613bf0614bc8565b03613c3d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107a8565b6002816004811115613c5157613c51614bc8565b03613c9e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107a8565b6003816004811115613cb257613cb2614bc8565b03610da85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107a8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613d5c5750600090506003613de0565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613db0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613dd957600060019250925050613de0565b9150600090505b94509492505050565b60008060408385031215613dfc57600080fd5b50508035926020909101359150565b6001600160a01b0381168114610da857600080fd5b8035613e2b81613e0b565b919050565b60008060408385031215613e4357600080fd5b8235613e4e81613e0b565b91506020830135613e5e81613e0b565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715613ebc57613ebc613e69565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613eeb57613eeb613e69565b604052919050565b600067ffffffffffffffff821115613f0d57613f0d613e69565b5060051b60200190565b600082601f830112613f2857600080fd5b81356020613f3d613f3883613ef3565b613ec2565b82815260059290921b84018101918181019086841115613f5c57600080fd5b8286015b84811015613f80578035613f7381613e0b565b8352918301918301613f60565b509695505050505050565b600060208284031215613f9d57600080fd5b813567ffffffffffffffff811115613fb457600080fd5b613fc084828501613f17565b949350505050565b600081518084526020808501945080840160005b838110156140015781516001600160a01b031687529582019590820190600101613fdc565b509495945050505050565b60208152600061067b6020830184613fc8565b60008060006060848603121561403457600080fd5b833561403f81613e0b565b9250602084013561404f81613e0b565b929592945050506040919091013590565b600082601f83011261407157600080fd5b813567ffffffffffffffff81111561408b5761408b613e69565b61409e6020601f19601f84011601613ec2565b8181528460208386010111156140b357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156140e857600080fd5b8535945060208601356140fa81613e0b565b93506040860135925060608601359150608086013567ffffffffffffffff81111561412457600080fd5b61413088828901614060565b9150509295509295909350565b6000806000806080858703121561415357600080fd5b84359350602085013567ffffffffffffffff81111561417157600080fd5b61417d87828801613f17565b949794965050505060408301359260600135919050565b6000602082840312156141a657600080fd5b813567ffffffffffffffff8111156141bd57600080fd5b613fc084828501614060565b8015158114610da857600080fd5b6000806000606084860312156141ec57600080fd5b83359250602084013591506040840135614205816141c9565b809150509250925092565b6000806040838503121561422357600080fd5b82359150602083013567ffffffffffffffff81111561424157600080fd5b61424d85828601613f17565b9150509250929050565b600080600080600060a0868803121561426f57600080fd5b853561427a81613e0b565b9450602086013561428a81613e0b565b9350604086013567ffffffffffffffff8111156142a657600080fd5b6142b288828901613f17565b9350506060860135915060808601356142ca81613e0b565b809150509295509295909350565b80516001600160a01b0316825260208101516020830152604081015161430960408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b610200810161437882886142d8565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b6000604082840312156143b057600080fd5b6040516040810181811067ffffffffffffffff821117156143d3576143d3613e69565b60405290508082356143e481613e0b565b8152602092830135920191909152919050565b60008060008084860361020081121561440f57600080fd5b853561441a81613e0b565b9450602086013561442a81613e0b565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820181131561445e57600080fd5b614466613e98565b915061447460408801613e20565b82526060870135602083015261448c60808801613e20565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050614507866101c0870161439e565b905092959194509250565b60006020828403121561452457600080fd5b813561067b81613e0b565b60008060006060848603121561454457600080fd5b833561454f81613e0b565b9250602084013561455f81613e0b565b9150604084013567ffffffffffffffff81111561457b57600080fd5b61458786828701613f17565b9150509250925092565b6101c081016145a082866142d8565b6101808201939093526101a00152919050565b60008060008060008060c087890312156145cc57600080fd5b863567ffffffffffffffff8111156145e357600080fd5b6145ef89828a01613f17565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561465957614659614618565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060001982036146a0576146a0614618565b5060010190565b6000816146b6576146b6614618565b506000190190565b828152604060208201526000613fc06040830184613fc8565b600060208083850312156146ea57600080fd5b825167ffffffffffffffff81111561470157600080fd5b8301601f8101851361471257600080fd5b8051614720613f3882613ef3565b81815260059190911b8201830190838101908783111561473f57600080fd5b928401925b8284101561475d57835182529284019290840190614744565b979650505050505050565b60006020828403121561477a57600080fd5b815160ff8116811461067b57600080fd5b600181815b808511156147c65781600019048211156147ac576147ac614618565b808516156147b957918102915b93841c9390800290614790565b509250929050565b6000826147dd57506001611796565b816147ea57506000611796565b8160018114614800576002811461480a57614826565b6001915050611796565b60ff84111561481b5761481b614618565b50506001821b611796565b5060208310610133831016604e8410600b8410161715614849575081810a611796565b614853838361478b565b806000190482111561486757614867614618565b029392505050565b600061067b83836147ce565b600081600019048311821515161561489557614895614618565b500290565b6000826148d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007f8000000000000000000000000000000000000000000000000000000000000000820361490657614906614618565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561494e5761494e614618565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561498957614989614618565b600087129250878205871284841616156149a5576149a5614618565b878505871281841616156149bb576149bb614618565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615614a0357614a03614618565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615614a3757614a37614618565b50500190565b60008219821115614a5057614a50614618565b500190565b60005b83811015614a70578181015183820152602001614a58565b83811115614a7f576000848401525b50505050565b60008251614a97818460208701614a55565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c0840152614aeb8160e0850160208701614a55565b601f01601f19169190910160e001979650505050505050565b600060208284031215614b1657600080fd5b5051919050565b600060208284031215614b2f57600080fd5b815161067b816141c9565b85815284602082015260a060408201526000614b5960a0830186613fc8565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000614b8f6080830186613fc8565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215614bbd57600080fd5b815161067b81613e0b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220e93177783ba3903e09952a9c250cc23fc0902dc32b19e0d8e7e3ed60321e4cb064736f6c634300080e0033",
1044
- "deployedBytecode": "0x6080604052600436106101825760003560e01c80635ff530f2116100d557806381f3fdc311610084578063aa5d448f11610061578063aa5d448f146105ad578063d96661ef146105cd578063f2fde38b146105ed578063fe8691b41461060d57005b806381f3fdc31461054d5780638da5cb5b1461057c578063a6a3694a1461059a57005b80636f151a38116100b25780636f151a38146104f8578063715018a614610518578063744cfdd91461052d57005b80635ff530f21461048757806362a76603146104a757806363c102b4146104d857005b8063238ac9331161013157806334e3f92d1161010e57806334e3f92d146103fc5780633fc8cef3146104475780635c8181211461046757005b8063238ac933146102ab5780632926e5de146102e35780632bd2c18d146103dc57005b80630fcc40c41161015f5780630fcc40c41461023e5780631b1534011461026b5780631f8c24de1461028b57005b8063016eb8a81461018b578063089afeae146101be5780630d83b1e41461022857005b3661018957005b005b34801561019757600080fd5b506101ab6101a6366004613de9565b610661565b6040519081526020015b60405180910390f35b3480156101ca57600080fd5b506102096101d9366004613e30565b6008602090815260009283526040808420909152908252902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016101b5565b34801561023457600080fd5b506101ab60095481565b34801561024a57600080fd5b5061025e610259366004613f8b565b610682565b6040516101b5919061400c565b34801561027757600080fd5b5061018961028636600461401f565b610752565b34801561029757600080fd5b506101896102a63660046140d0565b61080d565b3480156102b757600080fd5b506002546102cb906001600160a01b031681565b6040516001600160a01b0390911681526020016101b5565b3480156102ef57600080fd5b506103726102fe366004613e30565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e0850152610100840152610120830152610140820152610160810191909152610180016101b5565b3480156103e857600080fd5b506101ab6103f736600461413d565b61088d565b34801561040857600080fd5b50610437610417366004614194565b805160208183018101805160038252928201919093012091525460ff1681565b60405190151581526020016101b5565b34801561045357600080fd5b506004546102cb906001600160a01b031681565b34801561047357600080fd5b506101ab6104823660046141d7565b6108e2565b34801561049357600080fd5b506101ab6104a2366004614210565b61092a565b3480156104b357600080fd5b506104c76104c2366004614257565b610a6e565b6040516101b5959493929190614369565b3480156104e457600080fd5b506101896104f33660046143f7565b610b34565b34801561050457600080fd5b50610189610513366004614512565b610d45565b34801561052457600080fd5b50610189610dab565b34801561053957600080fd5b506101ab610548366004614210565b610e11565b34801561055957600080fd5b5061056d61056836600461452f565b610f3b565b6040516101b593929190614591565b34801561058857600080fd5b506000546001600160a01b03166102cb565b6101896105a83660046145b3565b61130b565b3480156105b957600080fd5b506101896105c8366004614512565b611648565b3480156105d957600080fd5b506005546102cb906001600160a01b031681565b3480156105f957600080fd5b50610189610608366004614512565b6116ab565b34801561061957600080fd5b5061064c610628366004613e30565b60066020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101b5565b60095460009061067b90610675858561178a565b9061179c565b9392505050565b805160609060008167ffffffffffffffff8111156106a2576106a2613e69565b6040519080825280602002602001820160405280156106cb578160200160208202803683370190505b5090506000825b6001811061074857856106e6600183614647565b815181106106f6576106f661465e565b60200260200101518383815181106107105761071061465e565b6001600160a01b0390921660209283029190910190910152816107328161468d565b9250508080610740906146a7565b9150506106d2565b5090949350505050565b6000546001600160a01b031633146107b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107bc8383836117a8565b6108085760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c0000000000000000000060448201526064016107a8565b505050565b6108156117df565b6108228585858585611838565b61082e85858584611a24565b81421061087d5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e00000060448201526064016107a8565b61088660018055565b5050505050565b600080808481036108ba576108a2878761092a565b91506108b0848360006108e2565b91508192506108d8565b6108c48787610e11565b90506108d2848260016108e2565b90508092505b5050949350505050565b600060018215610900576009546108f99086611a93565b9050610910565b60095461090d9086611a9f565b90505b60095461092190610675868461178a565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f9061097a90879087906004016146be565b600060405180830381865afa158015610997573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109bf91908101906146d7565b9050806109d760018351611a9f90919063ffffffff16565b815181106109e7576109e761465e565b6020026020010151915060008211610a675760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e2030000000000000000000000000000000000060648201526084016107a8565b5092915050565b610ae460405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600080600080600080610af98c8c8c8c611aab565b92995090945092509050610b0d8984611a9f565b9850610b1d8c8c8b8b8686611e8f565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610b8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b600082606001511215610be35760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d2030000000000000000060448201526064016107a8565b600082602001511215610c385760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d20300000000000000060448201526064016107a8565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825583890151600180840191909155838a0151600284018054918e1691841691909117905560608a0151600384015560808a0151600484015560a08a0151600584015560c08a0151600684015560e08a0151958301959095556101008901516008808401919091556101208a015160098401556101408a0151600a84015561016090990151600b909201919091559484529581528583209683529586529390208251815496169590911694909417845590910151910155565b6000546001600160a01b03163314610d9f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b610da881612115565b50565b6000546001600160a01b03163314610e055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b610e0f60006121ca565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca7490610e6190879087906004016146be565b600060405180830381865afa158015610e7e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ea691908101906146d7565b905080600081518110610ebb57610ebb61465e565b6020026020010151915060008211610a675760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e203000000000000000000000000000000000000060648201526084016107a8565b610fb160405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa1580156110ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d19190614768565b60ff1691506110ea6110e483600a61486f565b8561092a565b9050600080828560800151111561113c5761012085015160808601516009546111138683614647565b61111d919061487b565b611127919061489a565b611131919061489a565b905060009150611185565b84608001518311156111855761012085015160808601516009546111608287614647565b61116a919061487b565b611174919061489a565b61117e919061489a565b9050600191505b60008113156113005760808501839052610140850151610160860151836111bd576111af826148d5565b91506111ba816148d5565b90505b600082126112005760208701516111d4848461490d565b6111de91906149c9565b6020880181905260c088015112156111fb5760c087015160208801525b61125c565b86602001518760a001518461121485612232565b61121e919061490d565b61122891906149c9565b131561123d5760a0870151602088015261125c565b602087015161124c848461490d565b61125691906149c9565b60208801525b600081126112a1576060870151611273848361490d565b61127d91906149c9565b60608801819052610100880151121561129c5761010087015160608801525b6112fd565b86606001518760e00151846112b584612232565b6112bf919061490d565b6112c991906149c9565b13156112de5760e087015160608801526112fd565b60608701516112ed848361490d565b6112f791906149c9565b60608801525b50505b505093509350939050565b6113136117df565b3332146113625760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c6572000000000060448201526064016107a8565b333b156113d65760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c730000000000000000000000000000000000000000000000000000000060648201526084016107a8565b826000036113fd576113e8858761092a565b93506113f6818560006108e2565b9350611418565b6114078487610e11565b9450611415818660016108e2565b94505b60008660008151811061142d5761142d61465e565b60200260200101519050600087600189516114489190614647565b815181106114585761145861465e565b6020908102919091018101513360009081526006835260408082206001600160a01b038716835290935291822060010180549193508992909161149c908490614a3d565b92505081905550600060405180604001604052806114b98561224e565b8152602001846001600160a01b03168152509050600060405180604001604052806114e38561224e565b81526001600160a01b03851660209091015282519091506003036115125761150d8433308c612287565b611587565b8834146115875760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f637572617465000000000000000000000000000000000000000000000000000060648201526084016107a8565b61159284848c6123f7565b50506115a382828b8b8e8c8c612688565b60006115b085858b612931565b90506000806115c187878f8e612a6d565b50604080513381526001600160a01b03808c1660208301528a1691810191909152606081018f90526080810186905260a0810183905260c0810182905291935091507f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49060e00160405180910390a15050505050505061164060018055565b505050505050565b6000546001600160a01b031633146116a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b610da881612d2b565b6000546001600160a01b031633146117055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b6001600160a01b0381166117815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107a8565b610da8816121ca565b600061067b828461487b565b92915050565b600061067b828461489a565b60006001600160a01b0384166117ca576117c28383612e90565b50600161067b565b6117d5848484612fa9565b5060019392505050565b6002600154036118315760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107a8565b6002600155565b6003816040516118489190614a85565b9081526040519081900360200190205460ff16156118a85760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a6365727469666963617465206578706972656460448201526064016107a8565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e88401526101048084019190915283518084039091018152610124909201909252805191012060009061196c9083613111565b6002549091506001600160a01b038083169116146119cc5760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c696420636572746966696361746560448201526064016107a8565b60016003836040516119de9190614a85565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b038316611a4157611a3c3383612e90565b611a4c565b611a4c833384612fa9565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d338585854286604051611a8596959493929190614aa1565b60405180910390a150505050565b600061067b8284614a3d565b600061067b8284614647565b611b2160405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa158015611c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c439190614768565b60ff169150611c5c611c5683600a61486f565b8761092a565b90506000808286608001511115611cae576101208601516080870151600954611c858683614647565b611c8f919061487b565b611c99919061489a565b611ca3919061489a565b905060009150611cf7565b8560800151831115611cf7576101208601516080870151600954611cd28287614647565b611cdc919061487b565b611ce6919061489a565b611cf0919061489a565b9050600191505b6000811315611e72576080860183905261014086015161016087015183611d2f57611d21826148d5565b9150611d2c816148d5565b90505b60008212611d72576020880151611d46848461490d565b611d5091906149c9565b6020890181905260c08901511215611d6d5760c088015160208901525b611dce565b87602001518860a0015184611d8685612232565b611d90919061490d565b611d9a91906149c9565b1315611daf5760a08801516020890152611dce565b6020880151611dbe848461490d565b611dc891906149c9565b60208901525b60008112611e13576060880151611de5848361490d565b611def91906149c9565b606089018190526101008901511215611e0e5761010088015160608901525b611e6f565b87606001518860e0015184611e2784612232565b611e31919061490d565b611e3b91906149c9565b1315611e505760e08801516060890152611e6f565b6060880151611e5f848361490d565b611e6991906149c9565b60608901525b50505b611e80878760200151610661565b94505050945094509450949050565b6001600160a01b03868116600090815260086020908152604080832089851680855290835281842082518084018452815487168152600191820154818601529589168552600684528285209185529252822090810154905491928392839211611f0757611f00888260200151610661565b93506120fc565b6001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054611f3e908a90614a3d565b10611f93576001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054611f009190611f7f908b90614a3d565b611f899190614647565b8260200151610661565b6000611fa087600a61486f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa158015612002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120269190614b04565b612030919061487b565b61203a919061489a565b6001600160a01b038981166000908152600660209081526040808320938f1683529290522060018101549054919250908290612077908c90614a3d565b6120819190614a3d565b10156120fa576001600160a01b038089166000908152600660209081526040808320938e168352929052205481906120ba908b90614a3d565b6120c49190614a3d565b6001600160a01b03808a166000908152600660209081526040808320938f16835292905220600101546120f79190614647565b93505b505b6121068885611a9f565b91505096509650969350505050565b6001600160a01b0381166121905760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107a8565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082121561224a57612245826148d5565b611796565b5090565b600060036001600160a01b03831661226857506001611796565b6004546001600160a01b03908116908416036117965750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916123199190614a85565b6000604051808303816000865af19150503d8060008114612356576040519150601f19603f3d011682016040523d82523d6000602084013e61235b565b606091505b50915091508180156123855750805115806123855750808060200190518101906123859190614b1d565b6116405760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c656400000000000000000000000000000060648201526084016107a8565b6001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce56700000000000000000000000000000000000000000000000000000000815290519395869590948694919363313ce5679380840193919291908290030181865afa1580156124f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251a9190614768565b60ff169050600061252f611c5683600a61486f565b90506000836101200151116125865760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e203000000060448201526064016107a8565b60008360800151116125da5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e7072696365203e203000000060448201526064016107a8565b80836080015111156126275761012083015160808401516009546125fe8483614647565b612608919061487b565b612612919061489a565b61261c919061489a565b945060009350612670565b826080015181111561267057610120830151608084015160095461264b8285614647565b612655919061487b565b61265f919061489a565b612669919061489a565b9450600193505b61267d8888838888613135565b505050935093915050565b86516003036126ad5760208701516005546126ad91906001600160a01b0316876134db565b865160031480156126bf575085516003145b80156126c9575081155b1561276c576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed17399061271f9088908890889030908890600401614b3a565b6000604051808303816000875af115801561273e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261276691908101906146d7565b50612928565b8651600314801561277e575085516003145b801561278a5750816001145b156127e0576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee9061271f9087908990889030908890600401614b3a565b865160031480156127fd57508551600214806127fd575085516001145b80156128095750816001145b1561285f576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a9061271f9087908990889030908890600401614b3a565b865160021480612870575086516001145b801561287d575085516003145b80156128895750816001145b15612928576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb419087906128df908890889030908890600401614b76565b60006040518083038185885af11580156128fd573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261292691908101906146d7565b505b50505050505050565b6001600160a01b0380841660009081526007602081815260408084208786168552825280842081516101808101835281548716815260018201549381018490526002820154909616918601919091526003810154606086015260048101546080860152600581015460a0860152600681015460c08601529182015460e085015260088201546101008501526009820154610120850152600a820154610140850152600b909101546101608401529091906129ec908490610661565b915060006040518060400160405280612a048761224e565b81526001600160a01b0387166020909101528051909150600303612a475781516001600160a01b03163014612a4257612a4285836000015185612fa9565b612a64565b81516001600160a01b03163014612a64578151612a649084613643565b50509392505050565b6001600160a01b038085166000908152600860209081526040808320878516845282528083208151808301909252805490941681526001909301549083015290819081908180612abf8a8a8a8a613726565b80935081945082995050505060066000336001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206001015460066000336001600160a01b03166001600160a01b0316815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206000015410612b7d57612b76878460200151610661565b9550612cb8565b3360009081526006602090815260408083206001600160a01b038d168452909152902060018101549054612bb2908990614a3d565b10612c05573360009081526006602090815260408083206001600160a01b038d168452909152902060018101549054612b769190612bf1908a90614a3d565b612bfb9190614647565b8460200151610661565b6000612c1282600a61486f565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015284906001600160a01b038e16906370a0823190602401602060405180830381865afa158015612c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c959190614b04565b612c9f919061487b565b612ca9919061489a565b9050612cb68a8983613a12565b505b612cc28787611a9f565b94508515612cd957612cd989846000015188612fa9565b612ce4893387612fa9565b3360009081526006602090815260408083206001600160a01b038d16845290915281208054879290612d17908490614a3d565b925050819055505050509450945094915050565b6001600160a01b038116612da75760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107a8565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015612e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e559190614bab565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b80471015612ee05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107a8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612f2d576040519150601f19603f3d011682016040523d82523d6000602084013e612f32565b606091505b50509050806108085760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107a8565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916130339190614a85565b6000604051808303816000865af19150503d8060008114613070576040519150601f19603f3d011682016040523d82523d6000602084013e613075565b606091505b509150915081801561309f57508051158061309f57508080602001905181019061309f9190614b1d565b6108865760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c65640000000000000000000000000000000000000060648201526084016107a8565b60008060006131208585613b7b565b9150915061312d81613bc0565b509392505050565b6000821315610886576001600160a01b03858116600090815260076020908152604080832093881683529290522060048101849055600a810154600b909101548261319157613183826148d5565b915061318e816148d5565b90505b60008212613242576001600160a01b038088166000908152600760209081526040808320938a16835292905220600101546131cc858461490d565b6131d691906149c9565b6001600160a01b038881166000908152600760209081526040808320938b168352929052206001810182905560060154121561323d576001600160a01b038781166000908152600760209081526040808320938a1683529290522060068101546001909101555b613332565b6001600160a01b038781166000908152600760209081526040808320938a1683529290522060018101546005909101548561327c85612232565b613286919061490d565b61329091906149c9565b13156132cb576001600160a01b038781166000908152600760209081526040808320938a168352929052206005810154600190910155613332565b6001600160a01b038088166000908152600760209081526040808320938a16835292905220600101546132fe858461490d565b61330891906149c9565b6001600160a01b038089166000908152600760209081526040808320938b16835292905220600101555b600081126133e3576001600160a01b038088166000908152600760209081526040808320938a168352929052206003015461336d858361490d565b61337791906149c9565b6001600160a01b038881166000908152600760209081526040808320938b16835292905220600381018290556008015412156133de576001600160a01b038781166000908152600760209081526040808320938a1683529290522060088101546003909101555b612928565b6001600160a01b038781166000908152600760208181526040808420948b16845293905291902060038101549101548561341c84612232565b613426919061490d565b61343091906149c9565b131561346c576001600160a01b038781166000908152600760208181526040808420948b16845293905291902090810154600390910155612928565b6001600160a01b038088166000908152600760209081526040808320938a168352929052206003015461349f858361490d565b6134a991906149c9565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015550505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916135659190614a85565b6000604051808303816000865af19150503d80600081146135a2576040519150601f19603f3d011682016040523d82523d6000602084013e6135a7565b606091505b50915091508180156135d15750805115806135d15750808060200190518101906135d19190614b1d565b6108865760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c656400000000000000000000000000000000000000000060648201526084016107a8565b604080516000808252602082019092526001600160a01b03841690839060405161366d9190614a85565b60006040518083038185875af1925050503d80600081146136aa576040519150601f19603f3d011682016040523d82523d6000602084013e6136af565b606091505b50509050806108085760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016107a8565b6001600160a01b0380851660009081526007602081815260408084208886168552825280842081516101808101835281548716815260018201549381019390935260028101549095169082015260038401546060820181905260048501546080830152600585015460a0830152600685015460c08301529184015460e082015260088401546101008201526009840154610120820152600a840154610140820152600b90930154610160840152909182918291906137e5908690610661565b60408083015190517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061386c9190614b04565b10156138e05760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e636500000000000000000000000000000000000060648201526084016107a8565b60006138f0868360600151610661565b11156139715761391281604001513361390d888560600151610661565b612fa9565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd338260400151613947888560600151610661565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a15b876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d39190614768565b60ff1691506139e6611c5683600a61486f565b925060006139f8868360200151610661565b9050613a048682611a9f565b945050509450945094915050565b3360009081526006602090815260408083206001600160a01b03871684529091529020600181015490548290613a49908590614a3d565b613a539190614a3d565b1015610808573360009081526006602090815260408083206001600160a01b03871684529091528120548290613a8a908590614a3d565b613a949190614a3d565b3360009081526006602090815260408083206001600160a01b0389168452909152902060010154613ac59190614647565b90508015613b06573360009081526006602090815260408083206001600160a01b038816845290915281208054839290613b00908490614a3d565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a001611a85565b6000808251604103613bb15760208301516040840151606085015160001a613ba587828585613d25565b94509450505050613bb9565b506000905060025b9250929050565b6000816004811115613bd457613bd4614bc8565b03613bdc5750565b6001816004811115613bf057613bf0614bc8565b03613c3d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107a8565b6002816004811115613c5157613c51614bc8565b03613c9e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107a8565b6003816004811115613cb257613cb2614bc8565b03610da85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107a8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613d5c5750600090506003613de0565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613db0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613dd957600060019250925050613de0565b9150600090505b94509492505050565b60008060408385031215613dfc57600080fd5b50508035926020909101359150565b6001600160a01b0381168114610da857600080fd5b8035613e2b81613e0b565b919050565b60008060408385031215613e4357600080fd5b8235613e4e81613e0b565b91506020830135613e5e81613e0b565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715613ebc57613ebc613e69565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613eeb57613eeb613e69565b604052919050565b600067ffffffffffffffff821115613f0d57613f0d613e69565b5060051b60200190565b600082601f830112613f2857600080fd5b81356020613f3d613f3883613ef3565b613ec2565b82815260059290921b84018101918181019086841115613f5c57600080fd5b8286015b84811015613f80578035613f7381613e0b565b8352918301918301613f60565b509695505050505050565b600060208284031215613f9d57600080fd5b813567ffffffffffffffff811115613fb457600080fd5b613fc084828501613f17565b949350505050565b600081518084526020808501945080840160005b838110156140015781516001600160a01b031687529582019590820190600101613fdc565b509495945050505050565b60208152600061067b6020830184613fc8565b60008060006060848603121561403457600080fd5b833561403f81613e0b565b9250602084013561404f81613e0b565b929592945050506040919091013590565b600082601f83011261407157600080fd5b813567ffffffffffffffff81111561408b5761408b613e69565b61409e6020601f19601f84011601613ec2565b8181528460208386010111156140b357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156140e857600080fd5b8535945060208601356140fa81613e0b565b93506040860135925060608601359150608086013567ffffffffffffffff81111561412457600080fd5b61413088828901614060565b9150509295509295909350565b6000806000806080858703121561415357600080fd5b84359350602085013567ffffffffffffffff81111561417157600080fd5b61417d87828801613f17565b949794965050505060408301359260600135919050565b6000602082840312156141a657600080fd5b813567ffffffffffffffff8111156141bd57600080fd5b613fc084828501614060565b8015158114610da857600080fd5b6000806000606084860312156141ec57600080fd5b83359250602084013591506040840135614205816141c9565b809150509250925092565b6000806040838503121561422357600080fd5b82359150602083013567ffffffffffffffff81111561424157600080fd5b61424d85828601613f17565b9150509250929050565b600080600080600060a0868803121561426f57600080fd5b853561427a81613e0b565b9450602086013561428a81613e0b565b9350604086013567ffffffffffffffff8111156142a657600080fd5b6142b288828901613f17565b9350506060860135915060808601356142ca81613e0b565b809150509295509295909350565b80516001600160a01b0316825260208101516020830152604081015161430960408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b610200810161437882886142d8565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b6000604082840312156143b057600080fd5b6040516040810181811067ffffffffffffffff821117156143d3576143d3613e69565b60405290508082356143e481613e0b565b8152602092830135920191909152919050565b60008060008084860361020081121561440f57600080fd5b853561441a81613e0b565b9450602086013561442a81613e0b565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820181131561445e57600080fd5b614466613e98565b915061447460408801613e20565b82526060870135602083015261448c60808801613e20565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050614507866101c0870161439e565b905092959194509250565b60006020828403121561452457600080fd5b813561067b81613e0b565b60008060006060848603121561454457600080fd5b833561454f81613e0b565b9250602084013561455f81613e0b565b9150604084013567ffffffffffffffff81111561457b57600080fd5b61458786828701613f17565b9150509250925092565b6101c081016145a082866142d8565b6101808201939093526101a00152919050565b60008060008060008060c087890312156145cc57600080fd5b863567ffffffffffffffff8111156145e357600080fd5b6145ef89828a01613f17565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561465957614659614618565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060001982036146a0576146a0614618565b5060010190565b6000816146b6576146b6614618565b506000190190565b828152604060208201526000613fc06040830184613fc8565b600060208083850312156146ea57600080fd5b825167ffffffffffffffff81111561470157600080fd5b8301601f8101851361471257600080fd5b8051614720613f3882613ef3565b81815260059190911b8201830190838101908783111561473f57600080fd5b928401925b8284101561475d57835182529284019290840190614744565b979650505050505050565b60006020828403121561477a57600080fd5b815160ff8116811461067b57600080fd5b600181815b808511156147c65781600019048211156147ac576147ac614618565b808516156147b957918102915b93841c9390800290614790565b509250929050565b6000826147dd57506001611796565b816147ea57506000611796565b8160018114614800576002811461480a57614826565b6001915050611796565b60ff84111561481b5761481b614618565b50506001821b611796565b5060208310610133831016604e8410600b8410161715614849575081810a611796565b614853838361478b565b806000190482111561486757614867614618565b029392505050565b600061067b83836147ce565b600081600019048311821515161561489557614895614618565b500290565b6000826148d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007f8000000000000000000000000000000000000000000000000000000000000000820361490657614906614618565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561494e5761494e614618565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561498957614989614618565b600087129250878205871284841616156149a5576149a5614618565b878505871281841616156149bb576149bb614618565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615614a0357614a03614618565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615614a3757614a37614618565b50500190565b60008219821115614a5057614a50614618565b500190565b60005b83811015614a70578181015183820152602001614a58565b83811115614a7f576000848401525b50505050565b60008251614a97818460208701614a55565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c0840152614aeb8160e0850160208701614a55565b601f01601f19169190910160e001979650505050505050565b600060208284031215614b1657600080fd5b5051919050565b600060208284031215614b2f57600080fd5b815161067b816141c9565b85815284602082015260a060408201526000614b5960a0830186613fc8565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000614b8f6080830186613fc8565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215614bbd57600080fd5b815161067b81613e0b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220e93177783ba3903e09952a9c250cc23fc0902dc32b19e0d8e7e3ed60321e4cb064736f6c634300080e0033",
1053
+ "bytecode": "0x60806040526305f5e1006009553480156200001957600080fd5b5060405162004fac38038062004fac8339810160408190526200003c91620001ef565b620000473362000079565b60018055600280546001600160a01b0319166001600160a01b0384161790556200007181620000c9565b50506200024c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166200012f5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b606482015260840160405180910390fd5b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001af919062000227565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b80516001600160a01b0381168114620001ea57600080fd5b919050565b600080604083850312156200020357600080fd5b6200020e83620001d2565b91506200021e60208401620001d2565b90509250929050565b6000602082840312156200023a57600080fd5b6200024582620001d2565b9392505050565b614d50806200025c6000396000f3fe6080604052600436106101825760003560e01c80635ff530f2116100d5578063853c074c11610084578063aa5d448f11610061578063aa5d448f146105b9578063d96661ef146105d9578063f2fde38b146105f9578063fe8691b41461061957005b8063853c074c146105685780638da5cb5b14610588578063a6a3694a146105a657005b8063715018a6116100b2578063715018a614610504578063744cfdd91461051957806381f3fdc31461053957005b80635ff530f21461049357806362a76603146104b35780636f151a38146104e457005b8063238ac9331161013157806334e3f92d1161010e57806334e3f92d146104085780633fc8cef3146104535780635c8181211461047357005b8063238ac933146102b75780632926e5de146102ef5780632bd2c18d146103e857005b80630fcc40c41161015f5780630fcc40c41461024a5780631b153401146102775780631f8c24de1461029757005b8063016eb8a81461018b578063089afeae146101be5780630d83b1e41461023457005b3661018957005b005b34801561019757600080fd5b506101ab6101a6366004613f00565b61066d565b6040519081526020015b60405180910390f35b3480156101ca57600080fd5b5061020f6101d9366004613f47565b60086020908152600092835260408084209091529082529020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b0390941684526020840192909252908201526060016101b5565b34801561024057600080fd5b506101ab60095481565b34801561025657600080fd5b5061026a6102653660046140a2565b61068e565b6040516101b59190614123565b34801561028357600080fd5b50610189610292366004614136565b61075e565b3480156102a357600080fd5b506101896102b23660046141e7565b610819565b3480156102c357600080fd5b506002546102d7906001600160a01b031681565b6040516001600160a01b0390911681526020016101b5565b3480156102fb57600080fd5b5061037e61030a366004613f47565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e0850152610100840152610120830152610140820152610160810191909152610180016101b5565b3480156103f457600080fd5b506101ab610403366004614254565b610899565b34801561041457600080fd5b506104436104233660046142ab565b805160208183018101805160038252928201919093012091525460ff1681565b60405190151581526020016101b5565b34801561045f57600080fd5b506004546102d7906001600160a01b031681565b34801561047f57600080fd5b506101ab61048e3660046142ee565b6108ee565b34801561049f57600080fd5b506101ab6104ae366004614327565b610936565b3480156104bf57600080fd5b506104d36104ce36600461436e565b610a7a565b6040516101b5959493929190614480565b3480156104f057600080fd5b506101896104ff3660046144b5565b610b40565b34801561051057600080fd5b50610189610ba6565b34801561052557600080fd5b506101ab610534366004614327565b610c0c565b34801561054557600080fd5b506105596105543660046144d2565b610d36565b6040516101b593929190614534565b34801561057457600080fd5b506101896105833660046145bb565b611106565b34801561059457600080fd5b506000546001600160a01b03166102d7565b6101896105b43660046146d6565b611324565b3480156105c557600080fd5b506101896105d43660046144b5565b611660565b3480156105e557600080fd5b506005546102d7906001600160a01b031681565b34801561060557600080fd5b506101896106143660046144b5565b6116c3565b34801561062557600080fd5b50610658610634366004613f47565b60066020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101b5565b6009546000906106879061068185856117a2565b906117b4565b9392505050565b805160609060008167ffffffffffffffff8111156106ae576106ae613f80565b6040519080825280602002602001820160405280156106d7578160200160208202803683370190505b5090506000825b6001811061075457856106f260018361476a565b8151811061070257610702614781565b602002602001015183838151811061071c5761071c614781565b6001600160a01b03909216602092830291909101909101528161073e816147b0565b925050808061074c906147ca565b9150506106de565b5090949350505050565b6000546001600160a01b031633146107bd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107c88383836117c0565b6108145760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c0000000000000000000060448201526064016107b4565b505050565b6108216117f7565b61082e8585858585611850565b61083a85858584611a3c565b8142106108895760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e00000060448201526064016107b4565b61089260018055565b5050505050565b600080808481036108c6576108ae8787610936565b91506108bc848360006108ee565b91508192506108e4565b6108d08787610c0c565b90506108de848260016108ee565b90508092505b5050949350505050565b60006001821561090c576009546109059086611aab565b905061091c565b6009546109199086611ab7565b90505b60095461092d9061068186846117a2565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f9061098690879087906004016147e1565b600060405180830381865afa1580156109a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cb91908101906147fa565b9050806109e360018351611ab790919063ffffffff16565b815181106109f3576109f3614781565b6020026020010151915060008211610a735760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e2030000000000000000000000000000000000060648201526084016107b4565b5092915050565b610af060405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600080600080600080610b058c8c8c8c611ac3565b92995090945092509050610b198984611ab7565b9850610b298c8c8b8b8686611ea7565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610b9a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b4565b610ba381612138565b50565b6000546001600160a01b03163314610c005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b4565b610c0a60006121ed565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca7490610c5c90879087906004016147e1565b600060405180830381865afa158015610c79573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ca191908101906147fa565b905080600081518110610cb657610cb6614781565b6020026020010151915060008211610a735760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e203000000000000000000000000000000000000060648201526084016107b4565b610dac60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc919061488b565b60ff169150610ee5610edf83600a614992565b85610936565b90506000808285608001511115610f37576101208501516080860151600954610f0e868361476a565b610f18919061499e565b610f2291906149bd565b610f2c91906149bd565b905060009150610f80565b8460800151831115610f80576101208501516080860151600954610f5b828761476a565b610f65919061499e565b610f6f91906149bd565b610f7991906149bd565b9050600191505b60008113156110fb576080850183905261014085015161016086015183610fb857610faa826149f8565b9150610fb5816149f8565b90505b60008212610ffb576020870151610fcf8484614a30565b610fd99190614aec565b6020880181905260c08801511215610ff65760c087015160208801525b611057565b86602001518760a001518461100f85612255565b6110199190614a30565b6110239190614aec565b13156110385760a08701516020880152611057565b60208701516110478484614a30565b6110519190614aec565b60208801525b6000811261109c57606087015161106e8483614a30565b6110789190614aec565b6060880181905261010088015112156110975761010087015160608801525b6110f8565b86606001518760e00151846110b084612255565b6110ba9190614a30565b6110c49190614aec565b13156110d95760e087015160608801526110f8565b60608701516110e88483614a30565b6110f29190614aec565b60608801525b50505b505093509350939050565b6000546001600160a01b031633146111605760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b4565b6000826060015112156111b55760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d2030000000000000000060448201526064016107b4565b60008260200151121561120a5760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d20300000000000000060448201526064016107b4565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825583890151600180840191909155838a015160028085018054928f169285169290921790915560608b0151600385015560808b0151600485015560a08b0151600585015560c08b0151600685015560e08b0151968401969096556101008a01516008808501919091556101208b015160098501556101408b0151600a850155610160909a0151600b9093019290925595855296825280842097845296815291869020845181549816979093169690961782558201519281019290925590910151910155565b61132c6117f7565b33321461137b5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c6572000000000060448201526064016107b4565b333b156113ef5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c730000000000000000000000000000000000000000000000000000000060648201526084016107b4565b82600003611416576114018587610936565b935061140f818560006108ee565b9350611431565b6114208487610c0c565b945061142e818660016108ee565b94505b60008660008151811061144657611446614781565b6020026020010151905060008760018951611461919061476a565b8151811061147157611471614781565b6020908102919091018101513360009081526006835260408082206001600160a01b03871683529093529182206001018054919350899290916114b5908490614b60565b92505081905550600060405180604001604052806114d285612271565b8152602001846001600160a01b03168152509050600060405180604001604052806114fc85612271565b81526001600160a01b038516602090910152825190915060030361152b576115268433308c6122aa565b6115a0565b8834146115a05760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f637572617465000000000000000000000000000000000000000000000000000060648201526084016107b4565b6115ab84848c61241a565b50506115bc82828b8b8e8c8c6126ab565b60006115c985858b612954565b90506000806115da87878f8e612a90565b604080513381526001600160a01b03808c1660208301528a1691810191909152606081018f90526080810186905260a0810183905260c0810182905291935091507f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49060e00160405180910390a15050505050505061165860018055565b505050505050565b6000546001600160a01b031633146116ba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b4565b610ba381612ce5565b6000546001600160a01b0316331461171d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b4565b6001600160a01b0381166117995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107b4565b610ba3816121ed565b6000610687828461499e565b92915050565b600061068782846149bd565b60006001600160a01b0384166117e2576117da8383612e4a565b506001610687565b6117ed848484612f63565b5060019392505050565b6002600154036118495760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107b4565b6002600155565b6003816040516118609190614ba8565b9081526040519081900360200190205460ff16156118c05760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a6365727469666963617465206578706972656460448201526064016107b4565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e88401526101048084019190915283518084039091018152610124909201909252805191012060009061198490836130cb565b6002549091506001600160a01b038083169116146119e45760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c696420636572746966696361746560448201526064016107b4565b60016003836040516119f69190614ba8565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b038316611a5957611a543383612e4a565b611a64565b611a64833384612f63565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d338585854286604051611a9d96959493929190614bc4565b60405180910390a150505050565b60006106878284614b60565b6000610687828461476a565b611b3960405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa158015611c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5b919061488b565b60ff169150611c74611c6e83600a614992565b87610936565b90506000808286608001511115611cc6576101208601516080870151600954611c9d868361476a565b611ca7919061499e565b611cb191906149bd565b611cbb91906149bd565b905060009150611d0f565b8560800151831115611d0f576101208601516080870151600954611cea828761476a565b611cf4919061499e565b611cfe91906149bd565b611d0891906149bd565b9050600191505b6000811315611e8a576080860183905261014086015161016087015183611d4757611d39826149f8565b9150611d44816149f8565b90505b60008212611d8a576020880151611d5e8484614a30565b611d689190614aec565b6020890181905260c08901511215611d855760c088015160208901525b611de6565b87602001518860a0015184611d9e85612255565b611da89190614a30565b611db29190614aec565b1315611dc75760a08801516020890152611de6565b6020880151611dd68484614a30565b611de09190614aec565b60208901525b60008112611e2b576060880151611dfd8483614a30565b611e079190614aec565b606089018190526101008901511215611e265761010088015160608901525b611e87565b87606001518860e0015184611e3f84612255565b611e499190614a30565b611e539190614aec565b1315611e685760e08801516060890152611e87565b6060880151611e778483614a30565b611e819190614aec565b60608901525b50505b611e9887876020015161066d565b94505050945094509450949050565b6001600160a01b038681166000908152600860209081526040808320898516808552908352818420825160608101845281548716815260018083015482870152600290920154818501529589168552600684528285209185529252822090810154905491928392839211611f2a57611f2388826020015161066d565b935061211f565b6001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054611f61908a90614b60565b10611fb6576001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054611f239190611fa2908b90614b60565b611fac919061476a565b826020015161066d565b6000611fc387600a614992565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120499190614c27565b612053919061499e565b61205d91906149bd565b6001600160a01b038981166000908152600660209081526040808320938f168352929052206001810154905491925090829061209a908c90614b60565b6120a49190614b60565b101561211d576001600160a01b038089166000908152600660209081526040808320938e168352929052205481906120dd908b90614b60565b6120e79190614b60565b6001600160a01b03808a166000908152600660209081526040808320938f168352929052206001015461211a919061476a565b93505b505b6121298885611ab7565b91505096509650969350505050565b6001600160a01b0381166121b35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107b4565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082121561226d57612268826149f8565b6117ae565b5090565b600060036001600160a01b03831661228b575060016117ae565b6004546001600160a01b03908116908416036117ae5750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161233c9190614ba8565b6000604051808303816000865af19150503d8060008114612379576040519150601f19603f3d011682016040523d82523d6000602084013e61237e565b606091505b50915091508180156123a85750805115806123a85750808060200190518101906123a89190614c40565b6116585760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c656400000000000000000000000000000060648201526084016107b4565b6001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce56700000000000000000000000000000000000000000000000000000000815290519395869590948694919363313ce5679380840193919291908290030181865afa158015612519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253d919061488b565b60ff1690506000612552611c6e83600a614992565b90506000836101200151116125a95760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e203000000060448201526064016107b4565b60008360800151116125fd5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e7072696365203e203000000060448201526064016107b4565b808360800151111561264a576101208301516080840151600954612621848361476a565b61262b919061499e565b61263591906149bd565b61263f91906149bd565b945060009350612693565b826080015181111561269357610120830151608084015160095461266e828561476a565b612678919061499e565b61268291906149bd565b61268c91906149bd565b9450600193505b6126a088888388886130ef565b505050935093915050565b86516003036126d05760208701516005546126d091906001600160a01b031687613495565b865160031480156126e2575085516003145b80156126ec575081155b1561278f576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed1739906127429088908890889030908890600401614c5d565b6000604051808303816000875af1158015612761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261278991908101906147fa565b5061294b565b865160031480156127a1575085516003145b80156127ad5750816001145b15612803576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee906127429087908990889030908890600401614c5d565b865160031480156128205750855160021480612820575085516001145b801561282c5750816001145b15612882576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a906127429087908990889030908890600401614c5d565b865160021480612893575086516001145b80156128a0575085516003145b80156128ac5750816001145b1561294b576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb41908790612902908890889030908890600401614c99565b60006040518083038185885af1158015612920573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261294991908101906147fa565b505b50505050505050565b6001600160a01b0380841660009081526007602081815260408084208786168552825280842081516101808101835281548716815260018201549381018490526002820154909616918601919091526003810154606086015260048101546080860152600581015460a0860152600681015460c08601529182015460e085015260088201546101008501526009820154610120850152600a820154610140850152600b90910154610160840152909190612a0f90849061066d565b915060006040518060400160405280612a2787612271565b81526001600160a01b0387166020909101528051909150600303612a6a5781516001600160a01b03163014612a6557612a6585836000015185612f63565b612a87565b81516001600160a01b03163014612a87578151612a8790846135fd565b50509392505050565b6001600160a01b03808516600090815260086020908152604080832087851684528252808320815160608101835281549095168552600181015492850192909252600290910154908301529081908180612aec898989896136e0565b3360009081526006602090815260408083206001600160a01b038f168452909152902060018101549054939950919450925011612b3857612b3186846020015161066d565b9450612c73565b3360009081526006602090815260408083206001600160a01b038c168452909152902060018101549054612b6d908890614b60565b10612bc0573360009081526006602090815260408083206001600160a01b038c168452909152902060018101549054612b319190612bac908990614b60565b612bb6919061476a565b846020015161066d565b6000612bcd82600a614992565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa158015612c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c509190614c27565b612c5a919061499e565b612c6491906149bd565b9050612c71898883613a6b565b505b612c7d8686611ab7565b93508415612c9457612c9488846000015187612f63565b612c9f883386612f63565b3360009081526006602090815260408083206001600160a01b038c16845290915281208054869290612cd2908490614b60565b9250508190555050505094509492505050565b6001600160a01b038116612d615760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107b4565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015612deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0f9190614cce565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b80471015612e9a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107b4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee7576040519150601f19603f3d011682016040523d82523d6000602084013e612eec565b606091505b50509050806108145760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107b4565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691612fed9190614ba8565b6000604051808303816000865af19150503d806000811461302a576040519150601f19603f3d011682016040523d82523d6000602084013e61302f565b606091505b50915091508180156130595750805115806130595750808060200190518101906130599190614c40565b6108925760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c65640000000000000000000000000000000000000060648201526084016107b4565b60008060006130da8585613bd4565b915091506130e781613c19565b509392505050565b6000821315610892576001600160a01b03858116600090815260076020908152604080832093881683529290522060048101849055600a810154600b909101548261314b5761313d826149f8565b9150613148816149f8565b90505b600082126131fc576001600160a01b038088166000908152600760209081526040808320938a16835292905220600101546131868584614a30565b6131909190614aec565b6001600160a01b038881166000908152600760209081526040808320938b16835292905220600181018290556006015412156131f7576001600160a01b038781166000908152600760209081526040808320938a1683529290522060068101546001909101555b6132ec565b6001600160a01b038781166000908152600760209081526040808320938a1683529290522060018101546005909101548561323685612255565b6132409190614a30565b61324a9190614aec565b1315613285576001600160a01b038781166000908152600760209081526040808320938a1683529290522060058101546001909101556132ec565b6001600160a01b038088166000908152600760209081526040808320938a16835292905220600101546132b88584614a30565b6132c29190614aec565b6001600160a01b038089166000908152600760209081526040808320938b16835292905220600101555b6000811261339d576001600160a01b038088166000908152600760209081526040808320938a16835292905220600301546133278583614a30565b6133319190614aec565b6001600160a01b038881166000908152600760209081526040808320938b1683529290522060038101829055600801541215613398576001600160a01b038781166000908152600760209081526040808320938a1683529290522060088101546003909101555b61294b565b6001600160a01b038781166000908152600760208181526040808420948b1684529390529190206003810154910154856133d684612255565b6133e09190614a30565b6133ea9190614aec565b1315613426576001600160a01b038781166000908152600760208181526040808420948b1684529390529190209081015460039091015561294b565b6001600160a01b038088166000908152600760209081526040808320938a16835292905220600301546134598583614a30565b6134639190614aec565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015550505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052915160009283929087169161351f9190614ba8565b6000604051808303816000865af19150503d806000811461355c576040519150601f19603f3d011682016040523d82523d6000602084013e613561565b606091505b509150915081801561358b57508051158061358b57508080602001905181019061358b9190614c40565b6108925760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c656400000000000000000000000000000000000000000060648201526084016107b4565b604080516000808252602082019092526001600160a01b0384169083906040516136279190614ba8565b60006040518083038185875af1925050503d8060008114613664576040519150601f19603f3d011682016040523d82523d6000602084013e613669565b606091505b50509050806108145760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016107b4565b6001600160a01b0380851660009081526007602081815260408084208886168552825280842081516101808101835281548716815260018201549381019390935260028101549095169082015260038401546060820181905260048501546080830152600585015460a0830152600685015460c08301529184015460e082015260088401546101008201526009840154610120820152600a840154610140820152600b909301546101608401529091829182919061379f90869061066d565b60408083015190517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613802573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138269190614c27565b101561389a5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e636500000000000000000000000000000000000060648201526084016107b4565b60006138aa86836060015161066d565b111561392b576138cc8160400151336138c788856060015161066d565b612f63565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd33826040015161390188856060015161066d565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a15b6001600160a01b0380891660009081526008602090815260408083208b85168452825280832081516060810183528154909516855260018101549285019290925260029091015490830181905261398390889061066d565b11156139c3576139a861399a87836040015161066d565b6139a38961068e565b613d7e565b6139c06139b987836040015161066d565b8790611ab7565b95505b886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a25919061488b565b60ff169250613a3e613a3884600a614992565b88610936565b93506000613a5087846020015161066d565b9050613a5c8782611ab7565b95505050509450945094915050565b3360009081526006602090815260408083206001600160a01b03871684529091529020600181015490548290613aa2908590614b60565b613aac9190614b60565b1015610814573360009081526006602090815260408083206001600160a01b03871684529091528120548290613ae3908590614b60565b613aed9190614b60565b3360009081526006602090815260408083206001600160a01b0389168452909152902060010154613b1e919061476a565b90508015613b5f573360009081526006602090815260408083206001600160a01b038816845290915281208054839290613b59908490614b60565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a001611a9d565b6000808251604103613c0a5760208301516040840151606085015160001a613bfe87828585613e3c565b94509450505050613c12565b506000905060025b9250929050565b6000816004811115613c2d57613c2d614ceb565b03613c355750565b6001816004811115613c4957613c49614ceb565b03613c965760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107b4565b6002816004811115613caa57613caa614ceb565b03613cf75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107b4565b6003816004811115613d0b57613d0b614ceb565b03610ba35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107b4565b600081600081518110613d9357613d93614781565b6020026020010151905060008260018451613dae919061476a565b81518110613dbe57613dbe614781565b6020026020010151905060006040518060400160405280613dde85612271565b8152602001846001600160a01b0316815250905060006040518060400160405280613e0885612271565b81526001600160a01b03851660209091015290506000613e2942600a614b60565b905061294b83838960018a6000876126ab565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e735750600090506003613ef7565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613ec7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ef057600060019250925050613ef7565b9150600090505b94509492505050565b60008060408385031215613f1357600080fd5b50508035926020909101359150565b6001600160a01b0381168114610ba357600080fd5b8035613f4281613f22565b919050565b60008060408385031215613f5a57600080fd5b8235613f6581613f22565b91506020830135613f7581613f22565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715613fd357613fd3613f80565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561400257614002613f80565b604052919050565b600067ffffffffffffffff82111561402457614024613f80565b5060051b60200190565b600082601f83011261403f57600080fd5b8135602061405461404f8361400a565b613fd9565b82815260059290921b8401810191818101908684111561407357600080fd5b8286015b8481101561409757803561408a81613f22565b8352918301918301614077565b509695505050505050565b6000602082840312156140b457600080fd5b813567ffffffffffffffff8111156140cb57600080fd5b6140d78482850161402e565b949350505050565b600081518084526020808501945080840160005b838110156141185781516001600160a01b0316875295820195908201906001016140f3565b509495945050505050565b60208152600061068760208301846140df565b60008060006060848603121561414b57600080fd5b833561415681613f22565b9250602084013561416681613f22565b929592945050506040919091013590565b600082601f83011261418857600080fd5b813567ffffffffffffffff8111156141a2576141a2613f80565b6141b56020601f19601f84011601613fd9565b8181528460208386010111156141ca57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156141ff57600080fd5b85359450602086013561421181613f22565b93506040860135925060608601359150608086013567ffffffffffffffff81111561423b57600080fd5b61424788828901614177565b9150509295509295909350565b6000806000806080858703121561426a57600080fd5b84359350602085013567ffffffffffffffff81111561428857600080fd5b6142948782880161402e565b949794965050505060408301359260600135919050565b6000602082840312156142bd57600080fd5b813567ffffffffffffffff8111156142d457600080fd5b6140d784828501614177565b8015158114610ba357600080fd5b60008060006060848603121561430357600080fd5b8335925060208401359150604084013561431c816142e0565b809150509250925092565b6000806040838503121561433a57600080fd5b82359150602083013567ffffffffffffffff81111561435857600080fd5b6143648582860161402e565b9150509250929050565b600080600080600060a0868803121561438657600080fd5b853561439181613f22565b945060208601356143a181613f22565b9350604086013567ffffffffffffffff8111156143bd57600080fd5b6143c98882890161402e565b9350506060860135915060808601356143e181613f22565b809150509295509295909350565b80516001600160a01b0316825260208101516020830152604081015161442060408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b610200810161448f82886143ef565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b6000602082840312156144c757600080fd5b813561068781613f22565b6000806000606084860312156144e757600080fd5b83356144f281613f22565b9250602084013561450281613f22565b9150604084013567ffffffffffffffff81111561451e57600080fd5b61452a8682870161402e565b9150509250925092565b6101c0810161454382866143ef565b6101808201939093526101a00152919050565b60006060828403121561456857600080fd5b6040516060810181811067ffffffffffffffff8211171561458b5761458b613f80565b604052905080823561459c81613f22565b8082525060208301356020820152604083013560408201525092915050565b6000806000808486036102208112156145d357600080fd5b85356145de81613f22565b945060208601356145ee81613f22565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820181131561462257600080fd5b61462a613faf565b915061463860408801613f37565b82526060870135602083015261465060808801613f37565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a0880135818401525050809250506146cb866101c08701614556565b905092959194509250565b60008060008060008060c087890312156146ef57600080fd5b863567ffffffffffffffff81111561470657600080fd5b61471289828a0161402e565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561477c5761477c61473b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060001982036147c3576147c361473b565b5060010190565b6000816147d9576147d961473b565b506000190190565b8281526040602082015260006140d760408301846140df565b6000602080838503121561480d57600080fd5b825167ffffffffffffffff81111561482457600080fd5b8301601f8101851361483557600080fd5b805161484361404f8261400a565b81815260059190911b8201830190838101908783111561486257600080fd5b928401925b8284101561488057835182529284019290840190614867565b979650505050505050565b60006020828403121561489d57600080fd5b815160ff8116811461068757600080fd5b600181815b808511156148e95781600019048211156148cf576148cf61473b565b808516156148dc57918102915b93841c93908002906148b3565b509250929050565b600082614900575060016117ae565b8161490d575060006117ae565b8160018114614923576002811461492d57614949565b60019150506117ae565b60ff84111561493e5761493e61473b565b50506001821b6117ae565b5060208310610133831016604e8410600b841016171561496c575081810a6117ae565b61497683836148ae565b806000190482111561498a5761498a61473b565b029392505050565b600061068783836148f1565b60008160001904831182151516156149b8576149b861473b565b500290565b6000826149f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007f80000000000000000000000000000000000000000000000000000000000000008203614a2957614a2961473b565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615614a7157614a7161473b565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615614aac57614aac61473b565b60008712925087820587128484161615614ac857614ac861473b565b87850587128184161615614ade57614ade61473b565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615614b2657614b2661473b565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615614b5a57614b5a61473b565b50500190565b60008219821115614b7357614b7361473b565b500190565b60005b83811015614b93578181015183820152602001614b7b565b83811115614ba2576000848401525b50505050565b60008251614bba818460208701614b78565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c0840152614c0e8160e0850160208701614b78565b601f01601f19169190910160e001979650505050505050565b600060208284031215614c3957600080fd5b5051919050565b600060208284031215614c5257600080fd5b8151610687816142e0565b85815284602082015260a060408201526000614c7c60a08301866140df565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000614cb260808301866140df565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215614ce057600080fd5b815161068781613f22565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212204fd9962b8c79ac2b43f1a10c6803f0da3f33631a2b5385f2285ea15db52723b064736f6c634300080e0033",
1054
+ "deployedBytecode": "0x6080604052600436106101825760003560e01c80635ff530f2116100d5578063853c074c11610084578063aa5d448f11610061578063aa5d448f146105b9578063d96661ef146105d9578063f2fde38b146105f9578063fe8691b41461061957005b8063853c074c146105685780638da5cb5b14610588578063a6a3694a146105a657005b8063715018a6116100b2578063715018a614610504578063744cfdd91461051957806381f3fdc31461053957005b80635ff530f21461049357806362a76603146104b35780636f151a38146104e457005b8063238ac9331161013157806334e3f92d1161010e57806334e3f92d146104085780633fc8cef3146104535780635c8181211461047357005b8063238ac933146102b75780632926e5de146102ef5780632bd2c18d146103e857005b80630fcc40c41161015f5780630fcc40c41461024a5780631b153401146102775780631f8c24de1461029757005b8063016eb8a81461018b578063089afeae146101be5780630d83b1e41461023457005b3661018957005b005b34801561019757600080fd5b506101ab6101a6366004613f00565b61066d565b6040519081526020015b60405180910390f35b3480156101ca57600080fd5b5061020f6101d9366004613f47565b60086020908152600092835260408084209091529082529020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b0390941684526020840192909252908201526060016101b5565b34801561024057600080fd5b506101ab60095481565b34801561025657600080fd5b5061026a6102653660046140a2565b61068e565b6040516101b59190614123565b34801561028357600080fd5b50610189610292366004614136565b61075e565b3480156102a357600080fd5b506101896102b23660046141e7565b610819565b3480156102c357600080fd5b506002546102d7906001600160a01b031681565b6040516001600160a01b0390911681526020016101b5565b3480156102fb57600080fd5b5061037e61030a366004613f47565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e0850152610100840152610120830152610140820152610160810191909152610180016101b5565b3480156103f457600080fd5b506101ab610403366004614254565b610899565b34801561041457600080fd5b506104436104233660046142ab565b805160208183018101805160038252928201919093012091525460ff1681565b60405190151581526020016101b5565b34801561045f57600080fd5b506004546102d7906001600160a01b031681565b34801561047f57600080fd5b506101ab61048e3660046142ee565b6108ee565b34801561049f57600080fd5b506101ab6104ae366004614327565b610936565b3480156104bf57600080fd5b506104d36104ce36600461436e565b610a7a565b6040516101b5959493929190614480565b3480156104f057600080fd5b506101896104ff3660046144b5565b610b40565b34801561051057600080fd5b50610189610ba6565b34801561052557600080fd5b506101ab610534366004614327565b610c0c565b34801561054557600080fd5b506105596105543660046144d2565b610d36565b6040516101b593929190614534565b34801561057457600080fd5b506101896105833660046145bb565b611106565b34801561059457600080fd5b506000546001600160a01b03166102d7565b6101896105b43660046146d6565b611324565b3480156105c557600080fd5b506101896105d43660046144b5565b611660565b3480156105e557600080fd5b506005546102d7906001600160a01b031681565b34801561060557600080fd5b506101896106143660046144b5565b6116c3565b34801561062557600080fd5b50610658610634366004613f47565b60066020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101b5565b6009546000906106879061068185856117a2565b906117b4565b9392505050565b805160609060008167ffffffffffffffff8111156106ae576106ae613f80565b6040519080825280602002602001820160405280156106d7578160200160208202803683370190505b5090506000825b6001811061075457856106f260018361476a565b8151811061070257610702614781565b602002602001015183838151811061071c5761071c614781565b6001600160a01b03909216602092830291909101909101528161073e816147b0565b925050808061074c906147ca565b9150506106de565b5090949350505050565b6000546001600160a01b031633146107bd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107c88383836117c0565b6108145760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c0000000000000000000060448201526064016107b4565b505050565b6108216117f7565b61082e8585858585611850565b61083a85858584611a3c565b8142106108895760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e00000060448201526064016107b4565b61089260018055565b5050505050565b600080808481036108c6576108ae8787610936565b91506108bc848360006108ee565b91508192506108e4565b6108d08787610c0c565b90506108de848260016108ee565b90508092505b5050949350505050565b60006001821561090c576009546109059086611aab565b905061091c565b6009546109199086611ab7565b90505b60095461092d9061068186846117a2565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f9061098690879087906004016147e1565b600060405180830381865afa1580156109a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109cb91908101906147fa565b9050806109e360018351611ab790919063ffffffff16565b815181106109f3576109f3614781565b6020026020010151915060008211610a735760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e2030000000000000000000000000000000000060648201526084016107b4565b5092915050565b610af060405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600080600080600080610b058c8c8c8c611ac3565b92995090945092509050610b198984611ab7565b9850610b298c8c8b8b8686611ea7565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610b9a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b4565b610ba381612138565b50565b6000546001600160a01b03163314610c005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b4565b610c0a60006121ed565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca7490610c5c90879087906004016147e1565b600060405180830381865afa158015610c79573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ca191908101906147fa565b905080600081518110610cb657610cb6614781565b6020026020010151915060008211610a735760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e203000000000000000000000000000000000000060648201526084016107b4565b610dac60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc919061488b565b60ff169150610ee5610edf83600a614992565b85610936565b90506000808285608001511115610f37576101208501516080860151600954610f0e868361476a565b610f18919061499e565b610f2291906149bd565b610f2c91906149bd565b905060009150610f80565b8460800151831115610f80576101208501516080860151600954610f5b828761476a565b610f65919061499e565b610f6f91906149bd565b610f7991906149bd565b9050600191505b60008113156110fb576080850183905261014085015161016086015183610fb857610faa826149f8565b9150610fb5816149f8565b90505b60008212610ffb576020870151610fcf8484614a30565b610fd99190614aec565b6020880181905260c08801511215610ff65760c087015160208801525b611057565b86602001518760a001518461100f85612255565b6110199190614a30565b6110239190614aec565b13156110385760a08701516020880152611057565b60208701516110478484614a30565b6110519190614aec565b60208801525b6000811261109c57606087015161106e8483614a30565b6110789190614aec565b6060880181905261010088015112156110975761010087015160608801525b6110f8565b86606001518760e00151846110b084612255565b6110ba9190614a30565b6110c49190614aec565b13156110d95760e087015160608801526110f8565b60608701516110e88483614a30565b6110f29190614aec565b60608801525b50505b505093509350939050565b6000546001600160a01b031633146111605760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b4565b6000826060015112156111b55760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d2030000000000000000060448201526064016107b4565b60008260200151121561120a5760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d20300000000000000060448201526064016107b4565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825583890151600180840191909155838a015160028085018054928f169285169290921790915560608b0151600385015560808b0151600485015560a08b0151600585015560c08b0151600685015560e08b0151968401969096556101008a01516008808501919091556101208b015160098501556101408b0151600a850155610160909a0151600b9093019290925595855296825280842097845296815291869020845181549816979093169690961782558201519281019290925590910151910155565b61132c6117f7565b33321461137b5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c6572000000000060448201526064016107b4565b333b156113ef5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c730000000000000000000000000000000000000000000000000000000060648201526084016107b4565b82600003611416576114018587610936565b935061140f818560006108ee565b9350611431565b6114208487610c0c565b945061142e818660016108ee565b94505b60008660008151811061144657611446614781565b6020026020010151905060008760018951611461919061476a565b8151811061147157611471614781565b6020908102919091018101513360009081526006835260408082206001600160a01b03871683529093529182206001018054919350899290916114b5908490614b60565b92505081905550600060405180604001604052806114d285612271565b8152602001846001600160a01b03168152509050600060405180604001604052806114fc85612271565b81526001600160a01b038516602090910152825190915060030361152b576115268433308c6122aa565b6115a0565b8834146115a05760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f637572617465000000000000000000000000000000000000000000000000000060648201526084016107b4565b6115ab84848c61241a565b50506115bc82828b8b8e8c8c6126ab565b60006115c985858b612954565b90506000806115da87878f8e612a90565b604080513381526001600160a01b03808c1660208301528a1691810191909152606081018f90526080810186905260a0810183905260c0810182905291935091507f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49060e00160405180910390a15050505050505061165860018055565b505050505050565b6000546001600160a01b031633146116ba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b4565b610ba381612ce5565b6000546001600160a01b0316331461171d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b4565b6001600160a01b0381166117995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107b4565b610ba3816121ed565b6000610687828461499e565b92915050565b600061068782846149bd565b60006001600160a01b0384166117e2576117da8383612e4a565b506001610687565b6117ed848484612f63565b5060019392505050565b6002600154036118495760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107b4565b6002600155565b6003816040516118609190614ba8565b9081526040519081900360200190205460ff16156118c05760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a6365727469666963617465206578706972656460448201526064016107b4565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e88401526101048084019190915283518084039091018152610124909201909252805191012060009061198490836130cb565b6002549091506001600160a01b038083169116146119e45760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c696420636572746966696361746560448201526064016107b4565b60016003836040516119f69190614ba8565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b038316611a5957611a543383612e4a565b611a64565b611a64833384612f63565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d338585854286604051611a9d96959493929190614bc4565b60405180910390a150505050565b60006106878284614b60565b6000610687828461476a565b611b3960405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa158015611c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5b919061488b565b60ff169150611c74611c6e83600a614992565b87610936565b90506000808286608001511115611cc6576101208601516080870151600954611c9d868361476a565b611ca7919061499e565b611cb191906149bd565b611cbb91906149bd565b905060009150611d0f565b8560800151831115611d0f576101208601516080870151600954611cea828761476a565b611cf4919061499e565b611cfe91906149bd565b611d0891906149bd565b9050600191505b6000811315611e8a576080860183905261014086015161016087015183611d4757611d39826149f8565b9150611d44816149f8565b90505b60008212611d8a576020880151611d5e8484614a30565b611d689190614aec565b6020890181905260c08901511215611d855760c088015160208901525b611de6565b87602001518860a0015184611d9e85612255565b611da89190614a30565b611db29190614aec565b1315611dc75760a08801516020890152611de6565b6020880151611dd68484614a30565b611de09190614aec565b60208901525b60008112611e2b576060880151611dfd8483614a30565b611e079190614aec565b606089018190526101008901511215611e265761010088015160608901525b611e87565b87606001518860e0015184611e3f84612255565b611e499190614a30565b611e539190614aec565b1315611e685760e08801516060890152611e87565b6060880151611e778483614a30565b611e819190614aec565b60608901525b50505b611e9887876020015161066d565b94505050945094509450949050565b6001600160a01b038681166000908152600860209081526040808320898516808552908352818420825160608101845281548716815260018083015482870152600290920154818501529589168552600684528285209185529252822090810154905491928392839211611f2a57611f2388826020015161066d565b935061211f565b6001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054611f61908a90614b60565b10611fb6576001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054611f239190611fa2908b90614b60565b611fac919061476a565b826020015161066d565b6000611fc387600a614992565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120499190614c27565b612053919061499e565b61205d91906149bd565b6001600160a01b038981166000908152600660209081526040808320938f168352929052206001810154905491925090829061209a908c90614b60565b6120a49190614b60565b101561211d576001600160a01b038089166000908152600660209081526040808320938e168352929052205481906120dd908b90614b60565b6120e79190614b60565b6001600160a01b03808a166000908152600660209081526040808320938f168352929052206001015461211a919061476a565b93505b505b6121298885611ab7565b91505096509650969350505050565b6001600160a01b0381166121b35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107b4565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082121561226d57612268826149f8565b6117ae565b5090565b600060036001600160a01b03831661228b575060016117ae565b6004546001600160a01b03908116908416036117ae5750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161233c9190614ba8565b6000604051808303816000865af19150503d8060008114612379576040519150601f19603f3d011682016040523d82523d6000602084013e61237e565b606091505b50915091508180156123a85750805115806123a85750808060200190518101906123a89190614c40565b6116585760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c656400000000000000000000000000000060648201526084016107b4565b6001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce56700000000000000000000000000000000000000000000000000000000815290519395869590948694919363313ce5679380840193919291908290030181865afa158015612519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253d919061488b565b60ff1690506000612552611c6e83600a614992565b90506000836101200151116125a95760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e203000000060448201526064016107b4565b60008360800151116125fd5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e7072696365203e203000000060448201526064016107b4565b808360800151111561264a576101208301516080840151600954612621848361476a565b61262b919061499e565b61263591906149bd565b61263f91906149bd565b945060009350612693565b826080015181111561269357610120830151608084015160095461266e828561476a565b612678919061499e565b61268291906149bd565b61268c91906149bd565b9450600193505b6126a088888388886130ef565b505050935093915050565b86516003036126d05760208701516005546126d091906001600160a01b031687613495565b865160031480156126e2575085516003145b80156126ec575081155b1561278f576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed1739906127429088908890889030908890600401614c5d565b6000604051808303816000875af1158015612761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261278991908101906147fa565b5061294b565b865160031480156127a1575085516003145b80156127ad5750816001145b15612803576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee906127429087908990889030908890600401614c5d565b865160031480156128205750855160021480612820575085516001145b801561282c5750816001145b15612882576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a906127429087908990889030908890600401614c5d565b865160021480612893575086516001145b80156128a0575085516003145b80156128ac5750816001145b1561294b576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb41908790612902908890889030908890600401614c99565b60006040518083038185885af1158015612920573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261294991908101906147fa565b505b50505050505050565b6001600160a01b0380841660009081526007602081815260408084208786168552825280842081516101808101835281548716815260018201549381018490526002820154909616918601919091526003810154606086015260048101546080860152600581015460a0860152600681015460c08601529182015460e085015260088201546101008501526009820154610120850152600a820154610140850152600b90910154610160840152909190612a0f90849061066d565b915060006040518060400160405280612a2787612271565b81526001600160a01b0387166020909101528051909150600303612a6a5781516001600160a01b03163014612a6557612a6585836000015185612f63565b612a87565b81516001600160a01b03163014612a87578151612a8790846135fd565b50509392505050565b6001600160a01b03808516600090815260086020908152604080832087851684528252808320815160608101835281549095168552600181015492850192909252600290910154908301529081908180612aec898989896136e0565b3360009081526006602090815260408083206001600160a01b038f168452909152902060018101549054939950919450925011612b3857612b3186846020015161066d565b9450612c73565b3360009081526006602090815260408083206001600160a01b038c168452909152902060018101549054612b6d908890614b60565b10612bc0573360009081526006602090815260408083206001600160a01b038c168452909152902060018101549054612b319190612bac908990614b60565b612bb6919061476a565b846020015161066d565b6000612bcd82600a614992565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa158015612c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c509190614c27565b612c5a919061499e565b612c6491906149bd565b9050612c71898883613a6b565b505b612c7d8686611ab7565b93508415612c9457612c9488846000015187612f63565b612c9f883386612f63565b3360009081526006602090815260408083206001600160a01b038c16845290915281208054869290612cd2908490614b60565b9250508190555050505094509492505050565b6001600160a01b038116612d615760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107b4565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015612deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0f9190614cce565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b80471015612e9a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107b4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee7576040519150601f19603f3d011682016040523d82523d6000602084013e612eec565b606091505b50509050806108145760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107b4565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691612fed9190614ba8565b6000604051808303816000865af19150503d806000811461302a576040519150601f19603f3d011682016040523d82523d6000602084013e61302f565b606091505b50915091508180156130595750805115806130595750808060200190518101906130599190614c40565b6108925760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c65640000000000000000000000000000000000000060648201526084016107b4565b60008060006130da8585613bd4565b915091506130e781613c19565b509392505050565b6000821315610892576001600160a01b03858116600090815260076020908152604080832093881683529290522060048101849055600a810154600b909101548261314b5761313d826149f8565b9150613148816149f8565b90505b600082126131fc576001600160a01b038088166000908152600760209081526040808320938a16835292905220600101546131868584614a30565b6131909190614aec565b6001600160a01b038881166000908152600760209081526040808320938b16835292905220600181018290556006015412156131f7576001600160a01b038781166000908152600760209081526040808320938a1683529290522060068101546001909101555b6132ec565b6001600160a01b038781166000908152600760209081526040808320938a1683529290522060018101546005909101548561323685612255565b6132409190614a30565b61324a9190614aec565b1315613285576001600160a01b038781166000908152600760209081526040808320938a1683529290522060058101546001909101556132ec565b6001600160a01b038088166000908152600760209081526040808320938a16835292905220600101546132b88584614a30565b6132c29190614aec565b6001600160a01b038089166000908152600760209081526040808320938b16835292905220600101555b6000811261339d576001600160a01b038088166000908152600760209081526040808320938a16835292905220600301546133278583614a30565b6133319190614aec565b6001600160a01b038881166000908152600760209081526040808320938b1683529290522060038101829055600801541215613398576001600160a01b038781166000908152600760209081526040808320938a1683529290522060088101546003909101555b61294b565b6001600160a01b038781166000908152600760208181526040808420948b1684529390529190206003810154910154856133d684612255565b6133e09190614a30565b6133ea9190614aec565b1315613426576001600160a01b038781166000908152600760208181526040808420948b1684529390529190209081015460039091015561294b565b6001600160a01b038088166000908152600760209081526040808320938a16835292905220600301546134598583614a30565b6134639190614aec565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015550505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052915160009283929087169161351f9190614ba8565b6000604051808303816000865af19150503d806000811461355c576040519150601f19603f3d011682016040523d82523d6000602084013e613561565b606091505b509150915081801561358b57508051158061358b57508080602001905181019061358b9190614c40565b6108925760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c656400000000000000000000000000000000000000000060648201526084016107b4565b604080516000808252602082019092526001600160a01b0384169083906040516136279190614ba8565b60006040518083038185875af1925050503d8060008114613664576040519150601f19603f3d011682016040523d82523d6000602084013e613669565b606091505b50509050806108145760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016107b4565b6001600160a01b0380851660009081526007602081815260408084208886168552825280842081516101808101835281548716815260018201549381019390935260028101549095169082015260038401546060820181905260048501546080830152600585015460a0830152600685015460c08301529184015460e082015260088401546101008201526009840154610120820152600a840154610140820152600b909301546101608401529091829182919061379f90869061066d565b60408083015190517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613802573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138269190614c27565b101561389a5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e636500000000000000000000000000000000000060648201526084016107b4565b60006138aa86836060015161066d565b111561392b576138cc8160400151336138c788856060015161066d565b612f63565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd33826040015161390188856060015161066d565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a15b6001600160a01b0380891660009081526008602090815260408083208b85168452825280832081516060810183528154909516855260018101549285019290925260029091015490830181905261398390889061066d565b11156139c3576139a861399a87836040015161066d565b6139a38961068e565b613d7e565b6139c06139b987836040015161066d565b8790611ab7565b95505b886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a25919061488b565b60ff169250613a3e613a3884600a614992565b88610936565b93506000613a5087846020015161066d565b9050613a5c8782611ab7565b95505050509450945094915050565b3360009081526006602090815260408083206001600160a01b03871684529091529020600181015490548290613aa2908590614b60565b613aac9190614b60565b1015610814573360009081526006602090815260408083206001600160a01b03871684529091528120548290613ae3908590614b60565b613aed9190614b60565b3360009081526006602090815260408083206001600160a01b0389168452909152902060010154613b1e919061476a565b90508015613b5f573360009081526006602090815260408083206001600160a01b038816845290915281208054839290613b59908490614b60565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a001611a9d565b6000808251604103613c0a5760208301516040840151606085015160001a613bfe87828585613e3c565b94509450505050613c12565b506000905060025b9250929050565b6000816004811115613c2d57613c2d614ceb565b03613c355750565b6001816004811115613c4957613c49614ceb565b03613c965760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107b4565b6002816004811115613caa57613caa614ceb565b03613cf75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107b4565b6003816004811115613d0b57613d0b614ceb565b03610ba35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107b4565b600081600081518110613d9357613d93614781565b6020026020010151905060008260018451613dae919061476a565b81518110613dbe57613dbe614781565b6020026020010151905060006040518060400160405280613dde85612271565b8152602001846001600160a01b0316815250905060006040518060400160405280613e0885612271565b81526001600160a01b03851660209091015290506000613e2942600a614b60565b905061294b83838960018a6000876126ab565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e735750600090506003613ef7565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613ec7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ef057600060019250925050613ef7565b9150600090505b94509492505050565b60008060408385031215613f1357600080fd5b50508035926020909101359150565b6001600160a01b0381168114610ba357600080fd5b8035613f4281613f22565b919050565b60008060408385031215613f5a57600080fd5b8235613f6581613f22565b91506020830135613f7581613f22565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715613fd357613fd3613f80565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561400257614002613f80565b604052919050565b600067ffffffffffffffff82111561402457614024613f80565b5060051b60200190565b600082601f83011261403f57600080fd5b8135602061405461404f8361400a565b613fd9565b82815260059290921b8401810191818101908684111561407357600080fd5b8286015b8481101561409757803561408a81613f22565b8352918301918301614077565b509695505050505050565b6000602082840312156140b457600080fd5b813567ffffffffffffffff8111156140cb57600080fd5b6140d78482850161402e565b949350505050565b600081518084526020808501945080840160005b838110156141185781516001600160a01b0316875295820195908201906001016140f3565b509495945050505050565b60208152600061068760208301846140df565b60008060006060848603121561414b57600080fd5b833561415681613f22565b9250602084013561416681613f22565b929592945050506040919091013590565b600082601f83011261418857600080fd5b813567ffffffffffffffff8111156141a2576141a2613f80565b6141b56020601f19601f84011601613fd9565b8181528460208386010111156141ca57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156141ff57600080fd5b85359450602086013561421181613f22565b93506040860135925060608601359150608086013567ffffffffffffffff81111561423b57600080fd5b61424788828901614177565b9150509295509295909350565b6000806000806080858703121561426a57600080fd5b84359350602085013567ffffffffffffffff81111561428857600080fd5b6142948782880161402e565b949794965050505060408301359260600135919050565b6000602082840312156142bd57600080fd5b813567ffffffffffffffff8111156142d457600080fd5b6140d784828501614177565b8015158114610ba357600080fd5b60008060006060848603121561430357600080fd5b8335925060208401359150604084013561431c816142e0565b809150509250925092565b6000806040838503121561433a57600080fd5b82359150602083013567ffffffffffffffff81111561435857600080fd5b6143648582860161402e565b9150509250929050565b600080600080600060a0868803121561438657600080fd5b853561439181613f22565b945060208601356143a181613f22565b9350604086013567ffffffffffffffff8111156143bd57600080fd5b6143c98882890161402e565b9350506060860135915060808601356143e181613f22565b809150509295509295909350565b80516001600160a01b0316825260208101516020830152604081015161442060408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b610200810161448f82886143ef565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b6000602082840312156144c757600080fd5b813561068781613f22565b6000806000606084860312156144e757600080fd5b83356144f281613f22565b9250602084013561450281613f22565b9150604084013567ffffffffffffffff81111561451e57600080fd5b61452a8682870161402e565b9150509250925092565b6101c0810161454382866143ef565b6101808201939093526101a00152919050565b60006060828403121561456857600080fd5b6040516060810181811067ffffffffffffffff8211171561458b5761458b613f80565b604052905080823561459c81613f22565b8082525060208301356020820152604083013560408201525092915050565b6000806000808486036102208112156145d357600080fd5b85356145de81613f22565b945060208601356145ee81613f22565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820181131561462257600080fd5b61462a613faf565b915061463860408801613f37565b82526060870135602083015261465060808801613f37565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a0880135818401525050809250506146cb866101c08701614556565b905092959194509250565b60008060008060008060c087890312156146ef57600080fd5b863567ffffffffffffffff81111561470657600080fd5b61471289828a0161402e565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561477c5761477c61473b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060001982036147c3576147c361473b565b5060010190565b6000816147d9576147d961473b565b506000190190565b8281526040602082015260006140d760408301846140df565b6000602080838503121561480d57600080fd5b825167ffffffffffffffff81111561482457600080fd5b8301601f8101851361483557600080fd5b805161484361404f8261400a565b81815260059190911b8201830190838101908783111561486257600080fd5b928401925b8284101561488057835182529284019290840190614867565b979650505050505050565b60006020828403121561489d57600080fd5b815160ff8116811461068757600080fd5b600181815b808511156148e95781600019048211156148cf576148cf61473b565b808516156148dc57918102915b93841c93908002906148b3565b509250929050565b600082614900575060016117ae565b8161490d575060006117ae565b8160018114614923576002811461492d57614949565b60019150506117ae565b60ff84111561493e5761493e61473b565b50506001821b6117ae565b5060208310610133831016604e8410600b841016171561496c575081810a6117ae565b61497683836148ae565b806000190482111561498a5761498a61473b565b029392505050565b600061068783836148f1565b60008160001904831182151516156149b8576149b861473b565b500290565b6000826149f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007f80000000000000000000000000000000000000000000000000000000000000008203614a2957614a2961473b565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615614a7157614a7161473b565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615614aac57614aac61473b565b60008712925087820587128484161615614ac857614ac861473b565b87850587128184161615614ade57614ade61473b565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615614b2657614b2661473b565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615614b5a57614b5a61473b565b50500190565b60008219821115614b7357614b7361473b565b500190565b60005b83811015614b93578181015183820152602001614b7b565b83811115614ba2576000848401525b50505050565b60008251614bba818460208701614b78565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c0840152614c0e8160e0850160208701614b78565b601f01601f19169190910160e001979650505050505050565b600060208284031215614c3957600080fd5b5051919050565b600060208284031215614c5257600080fd5b8151610687816142e0565b85815284602082015260a060408201526000614c7c60a08301866140df565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000614cb260808301866140df565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215614ce057600080fd5b815161068781613f22565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212204fd9962b8c79ac2b43f1a10c6803f0da3f33631a2b5385f2285ea15db52723b064736f6c634300080e0033",
1045
1055
  "linkReferences": {},
1046
1056
  "deployedLinkReferences": {}
1047
1057
  }
package/src/agent-swap.js CHANGED
@@ -106,7 +106,8 @@ class AgentSwap extends HI {
106
106
  config.feeChange = multiplication(division(config.feeChange,100),this.pointMax)
107
107
  config.rewardChange = multiplication(division(config.rewardChange,100),this.pointMax)
108
108
  tax.tax = multiplication(division(tax.tax,100),this.pointMax)
109
-
109
+ tax.backBuy = multiplication(division(tax.backBuy,100),this.pointMax)
110
+
110
111
  let symbol = new HERC20({ ...this.network, contract: tokenOut })
111
112
  config.price = await symbol.toAmount(config.price)
112
113
 
@@ -129,7 +130,8 @@ class AgentSwap extends HI {
129
130
  ],
130
131
  [
131
132
  tax.taxReceipt,
132
- tax.tax
133
+ tax.tax,
134
+ tax.backBuy
133
135
  ]
134
136
 
135
137
  ]
@@ -183,7 +185,7 @@ class AgentSwap extends HI {
183
185
  result.rewardMax = multiplication(division(result.rewardMax,this.pointMax),100)
184
186
  result.rewardMin = multiplication(division(result.rewardMin,this.pointMax),100)
185
187
  result.tax = multiplication(division(result.tax,this.pointMax),100)
186
-
188
+ result.backBuy = multiplication(division(result.backBuy,this.pointMax),100)
187
189
  return result
188
190
  }
189
191
 
@@ -245,6 +247,7 @@ class AgentSwap extends HI {
245
247
  // }
246
248
  let taxConfig = await this.SC.methods.taxConfig(inToken,outToken).call()
247
249
  result.taxRate = division(taxConfig.tax,this.pointMax)
250
+ result.backRate = division(taxConfig.backBuy,this.pointMax)
248
251
  result.feeRate = division(result.config.feeRate,this.pointMax)
249
252
  result.reward = division(result.config.reward,this.pointMax)
250
253
  return result