h-agent-swap 1.7.5 → 1.8.0

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.7.5",
3
+ "version": "1.8.0",
4
4
  "description": "agent-swap",
5
5
  "main": "src/index.js",
6
6
  "files": [
@@ -658,6 +658,29 @@
658
658
  "stateMutability": "view",
659
659
  "type": "function"
660
660
  },
661
+ {
662
+ "inputs": [],
663
+ "name": "limitBuy",
664
+ "outputs": [
665
+ {
666
+ "internalType": "uint256",
667
+ "name": "buyMin",
668
+ "type": "uint256"
669
+ },
670
+ {
671
+ "internalType": "uint256",
672
+ "name": "buyMax",
673
+ "type": "uint256"
674
+ },
675
+ {
676
+ "internalType": "uint256",
677
+ "name": "holdMax",
678
+ "type": "uint256"
679
+ }
680
+ ],
681
+ "stateMutability": "view",
682
+ "type": "function"
683
+ },
661
684
  {
662
685
  "inputs": [
663
686
  {
@@ -886,6 +909,38 @@
886
909
  "internalType": "int256",
887
910
  "name": "reward",
888
911
  "type": "int256"
912
+ },
913
+ {
914
+ "components": [
915
+ {
916
+ "internalType": "uint256",
917
+ "name": "buyMin",
918
+ "type": "uint256"
919
+ },
920
+ {
921
+ "internalType": "uint256",
922
+ "name": "buyMax",
923
+ "type": "uint256"
924
+ },
925
+ {
926
+ "internalType": "uint256",
927
+ "name": "holdMax",
928
+ "type": "uint256"
929
+ }
930
+ ],
931
+ "internalType": "struct TokenMarket.Limit",
932
+ "name": "limit",
933
+ "type": "tuple"
934
+ },
935
+ {
936
+ "internalType": "uint256",
937
+ "name": "currentHold",
938
+ "type": "uint256"
939
+ },
940
+ {
941
+ "internalType": "address",
942
+ "name": "pricing",
943
+ "type": "address"
889
944
  }
890
945
  ],
891
946
  "stateMutability": "view",
@@ -1302,6 +1357,36 @@
1302
1357
  "stateMutability": "nonpayable",
1303
1358
  "type": "function"
1304
1359
  },
1360
+ {
1361
+ "inputs": [
1362
+ {
1363
+ "components": [
1364
+ {
1365
+ "internalType": "uint256",
1366
+ "name": "buyMin",
1367
+ "type": "uint256"
1368
+ },
1369
+ {
1370
+ "internalType": "uint256",
1371
+ "name": "buyMax",
1372
+ "type": "uint256"
1373
+ },
1374
+ {
1375
+ "internalType": "uint256",
1376
+ "name": "holdMax",
1377
+ "type": "uint256"
1378
+ }
1379
+ ],
1380
+ "internalType": "struct TokenMarket.Limit",
1381
+ "name": "_limitBuy",
1382
+ "type": "tuple"
1383
+ }
1384
+ ],
1385
+ "name": "updateLimit",
1386
+ "outputs": [],
1387
+ "stateMutability": "nonpayable",
1388
+ "type": "function"
1389
+ },
1305
1390
  {
1306
1391
  "inputs": [
1307
1392
  {
@@ -1384,8 +1469,8 @@
1384
1469
  "type": "receive"
1385
1470
  }
1386
1471
  ],
1387
- "bytecode": "0x608060405262015180600a556000600b556305f5e100600d553480156200002557600080fd5b5060405162005cf138038062005cf18339810160408190526200004891620001fb565b620000533362000085565b60018055600280546001600160a01b0319166001600160a01b0384161790556200007d81620000d5565b505062000258565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166200013b5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b606482015260840160405180910390fd5b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000195573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bb919062000233565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b80516001600160a01b0381168114620001f657600080fd5b919050565b600080604083850312156200020f57600080fd5b6200021a83620001de565b91506200022a60208401620001de565b90509250929050565b6000602082840312156200024657600080fd5b6200025182620001de565b9392505050565b615a8980620002686000396000f3fe6080604052600436106101e75760003560e01c806362a766031161010e5780639bad44e8116100a7578063d738eba111610079578063eed8386c11610061578063eed8386c14610799578063f2fde38b146107d6578063fe8691b4146107f657005b8063d738eba114610759578063d96661ef1461077957005b80639bad44e8146106f0578063a6a3694a14610710578063aa5d448f14610723578063b18019861461074357005b80637aaa9b02116100e05780637aaa9b021461061057806381f3fdc3146106305780638da5cb5b1461065f5780639065a9af1461067d57005b806362a766031461058a5780636f151a38146105bb578063715018a6146105db578063744cfdd9146105f057005b80632926e5de1161018057806340216a831161015257806340216a83146104ff57806343d726d6146105345780635c8181211461054a5780635ff530f21461056a57005b80632926e5de1461037b5780632bd2c18d1461047457806334e3f92d146104945780633fc8cef3146104df57005b80631b153401116101b95780631b153401146102ed5780631f8c24de1461030d578063238ac9331461032d57806327af9e381461036557005b8063016eb8a8146101f0578063089afeae146102235780630d83b1e4146102aa5780630fcc40c4146102c057005b366101ee57005b005b3480156101fc57600080fd5b5061021061020b366004614b1d565b610835565b6040519081526020015b60405180910390f35b34801561022f57600080fd5b5061027b61023e366004614b64565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391921684565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800161021a565b3480156102b657600080fd5b50610210600d5481565b3480156102cc57600080fd5b506102e06102db366004614cbf565b610856565b60405161021a9190614d40565b3480156102f957600080fd5b506101ee610308366004614d53565b610926565b34801561031957600080fd5b506101ee610328366004614e04565b6109e1565b34801561033957600080fd5b5060025461034d906001600160a01b031681565b6040516001600160a01b03909116815260200161021a565b34801561037157600080fd5b50610210600a5481565b34801561038757600080fd5b5061040a610396366004614b64565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e08501526101008401526101208301526101408201526101608101919091526101800161021a565b34801561048057600080fd5b5061021061048f366004614e71565b610a61565b3480156104a057600080fd5b506104cf6104af366004614ec8565b805160208183018101805160038252928201919093012091525460ff1681565b604051901515815260200161021a565b3480156104eb57600080fd5b5060045461034d906001600160a01b031681565b34801561050b57600080fd5b5061051f61051a366004614b64565b610ab6565b6040805192835260208301919091520161021a565b34801561054057600080fd5b50610210600c5481565b34801561055657600080fd5b50610210610565366004614f0b565b610c02565b34801561057657600080fd5b50610210610585366004614f44565b610c4a565b34801561059657600080fd5b506105aa6105a5366004614f8b565b610d8e565b60405161021a95949392919061509d565b3480156105c757600080fd5b506101ee6105d63660046150d2565b610e56565b3480156105e757600080fd5b506101ee610ebc565b3480156105fc57600080fd5b5061021061060b366004614f44565b610f22565b34801561061c57600080fd5b506101ee61062b366004615168565b61104c565b34801561063c57600080fd5b5061065061064b366004615283565b611308565b60405161021a939291906152e5565b34801561066b57600080fd5b506000546001600160a01b031661034d565b34801561068957600080fd5b506106d0610698366004614d53565b600960209081526000938452604080852082529284528284209052825290208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161021a565b3480156106fc57600080fd5b506101ee61070b366004615362565b6116d8565b6101ee61071e36600461540f565b61195a565b34801561072f57600080fd5b506101ee61073e3660046150d2565b611c8f565b34801561074f57600080fd5b50610210600b5481565b34801561076557600080fd5b506101ee610774366004614b1d565b611cf2565b34801561078557600080fd5b5060055461034d906001600160a01b031681565b3480156107a557600080fd5b506107b96107b4366004614b64565b611d57565b604080519283526001600160a01b0390911660208301520161021a565b3480156107e257600080fd5b506101ee6107f13660046150d2565b611ee6565b34801561080257600080fd5b5061051f610811366004614b64565b60066020908152600092835260408084209091529082529020805460019091015482565b600d5460009061084f906108498585611fc5565b90611fd7565b9392505050565b805160609060008167ffffffffffffffff81111561087657610876614b9d565b60405190808252806020026020018201604052801561089f578160200160208202803683370190505b5090506000825b6001811061091c57856108ba6001836154a3565b815181106108ca576108ca6154ba565b60200260200101518383815181106108e4576108e46154ba565b6001600160a01b039092166020928302919091019091015281610906816154e9565b925050808061091490615503565b9150506108a6565b5090949350505050565b6000546001600160a01b031633146109855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610990838383611fe3565b6109dc5760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c00000000000000000000604482015260640161097c565b505050565b6109e961201a565b6109f68585858585612073565b610a028585858461225f565b814210610a515760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e000000604482015260640161097c565b610a5a60018055565b5050505050565b60008080848103610a8e57610a768787610c4a565b9150610a8484836000610c02565b9150819250610aac565b610a988787610f22565b9050610aa684826001610c02565b90508092505b5050949350505050565b6000806000600a54600b5442610acc919061551a565b610ad69190615532565b6001600160a01b0380871660008181526007602081815260408084208b87168086529083528185208251610180810184528154891681526001820154818601526002820154909816888401526003810154606089015260048101546080890152600581015460a0890152600681015460c08901529384015460e08801526008840154610100880152600980850154610120890152600a850154610140890152600b909401546101608801529484529181528183209383529283528082208583529092529081205492935090919003610bbb578060200151935080606001519250610bf9565b6001600160a01b0386811660009081526009602090815260408083209389168352928152828220858352905220600281015460039091015490945092505b50509250929050565b600060018215610c2057600d54610c1990866122ce565b9050610c30565b600d54610c2d90866122da565b90505b600d54610c41906108498684611fc5565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f90610c9a908790879060040161556d565b600060405180830381865afa158015610cb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cdf9190810190615586565b905080610cf7600183516122da90919063ffffffff16565b81518110610d0757610d076154ba565b6020026020010151915060008211610d875760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e20300000000000000000000000000000000000606482015260840161097c565b5092915050565b610e0460405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600080600080600080610e198c8c8c8c6122e6565b92995090945092509050610e2f8c8c8b866124d2565b9850610e3f8c8c8b8b868661251c565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610eb05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b610eb9816127b9565b50565b6000546001600160a01b03163314610f165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b610f20600061286e565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca7490610f72908790879060040161556d565b600060405180830381865afa158015610f8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fb79190810190615586565b905080600081518110610fcc57610fcc6154ba565b6020026020010151915060008211610d875760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e2030000000000000000000000000000000000000606482015260840161097c565b6000546001600160a01b031633146110a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b6000826060015112156110fb5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d20300000000000000000604482015260640161097c565b6000826020015112156111505760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d203000000000000000604482015260640161097c565b836001600160a01b031681606001516001600160a01b031614806111895750826001600160a01b031681606001516001600160a01b0316145b6111d55760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e6700000000604482015260640161097c565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b61137e60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa15801561147a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149e9190615617565b60ff1691506114b76114b183600a61571e565b85610c4a565b90506000808285608001511115611509576101208501516080860151600d546114e086836154a3565b6114ea919061572a565b6114f49190615532565b6114fe9190615532565b905060009150611552565b8460800151831115611552576101208501516080860151600d5461152d82876154a3565b611537919061572a565b6115419190615532565b61154b9190615532565b9050600191505b60008113156116cd57608085018390526101408501516101608601518361158a5761157c82615749565b915061158781615749565b90505b600082126115cd5760208701516115a18484615781565b6115ab919061583d565b6020880181905260c088015112156115c85760c087015160208801525b611629565b86602001518760a00151846115e1856128d6565b6115eb9190615781565b6115f5919061583d565b131561160a5760a08701516020880152611629565b60208701516116198484615781565b611623919061583d565b60208801525b6000811261166e5760608701516116408483615781565b61164a919061583d565b6060880181905261010088015112156116695761010087015160608801525b6116ca565b86606001518760e0015184611682846128d6565b61168c9190615781565b611696919061583d565b13156116ab5760e087015160608801526116ca565b60608701516116ba8483615781565b6116c4919061583d565b60608801525b50505b505093509350939050565b6000546001600160a01b031633146117325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b82518451146117835760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604482015260640161097c565b81518351146117d45760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604482015260640161097c565b80518251146118255760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604482015260640161097c565b60005b8451811015610a5a57611887838281518110611846576118466154ba565b6020026020010151858381518110611860576118606154ba565b602002602001015184848151811061187a5761187a6154ba565b60200260200101516128f2565b7fd854fbf5db341a7d003a14ee8ed089e806c8731c6aca5fb4b89095d0a230ccd08582815181106118ba576118ba6154ba565b60200260200101518583815181106118d4576118d46154ba565b60200260200101518584815181106118ee576118ee6154ba565b6020026020010151858581518110611908576119086154ba565b602002602001015160405161194094939291909384526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a180611952816154e9565b915050611828565b61196261201a565b3332146119b15760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c65720000000000604482015260640161097c565b333b15611a255760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c7300000000000000000000000000000000000000000000000000000000606482015260840161097c565b82600003611a4c57611a378587610c4a565b9350611a4581856000610c02565b9350611a67565b611a568487610f22565b9450611a6481866001610c02565b94505b600086600081518110611a7c57611a7c6154ba565b6020026020010151905060008760018951611a9791906154a3565b81518110611aa757611aa76154ba565b6020908102919091018101513360009081526006835260408082206001600160a01b0387168352909352918220600101805491935089929091611aeb90849061551a565b9250508190555060006040518060400160405280611b0885612a5a565b8152602001846001600160a01b0316815250905060006040518060400160405280611b3285612a5a565b81526001600160a01b0385166020909101528251909150600303611b6157611b5c8433308c612a93565b611bd6565b883414611bd65760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f6375726174650000000000000000000000000000000000000000000000000000606482015260840161097c565b611be582828b8b8e8c8c612c03565b6000611bf285858b612eac565b9050600080611c0387878f8e613062565b91509150611c1287878f613371565b604080513381526001600160a01b038981166020830152881681830152606081018e90526080810185905260a0810184905260c0810183905290517f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49181900360e00190a150505050505050611c8760018055565b505050505050565b6000546001600160a01b03163314611ce95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b610eb981613642565b6000546001600160a01b03163314611d4c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b600a91909155600b55565b6000806000600a54600b5442611d6d919061551a565b611d779190615532565b6001600160a01b0380871660008181526009602081815260408084208b871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b9091015461016082015281519293509091158015611e865750600c54155b15611e975780608001519450611eaf565b8151600003611eaa57600c549450611eaf565b815194505b505050506001600160a01b039283166000908152600860209081526040808320948616835293905291909120600301549092911690565b6000546001600160a01b03163314611f405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b6001600160a01b038116611fbc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161097c565b610eb98161286e565b600061084f828461572a565b92915050565b600061084f8284615532565b60006001600160a01b03841661200557611ffd83836137a7565b50600161084f565b6120108484846128f2565b5060019392505050565b60026001540361206c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161097c565b6002600155565b60038160405161208391906158e1565b9081526040519081900360200190205460ff16156120e35760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a63657274696669636174652065787069726564604482015260640161097c565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e8840152610104808401919091528351808403909101815261012490920190925280519101206000906121a790836138c0565b6002549091506001600160a01b038083169116146122075760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c6964206365727469666963617465604482015260640161097c565b600160038360405161221991906158e1565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b03831661227c5761227733836137a7565b612287565b6122878333846128f2565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d3385858542866040516122c0969594939291906158fd565b60405180910390a150505050565b600061084f828461551a565b600061084f82846154a3565b61235c60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa15801561245a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247e9190615617565b60ff16915061249761249183600a61571e565b87610c4a565b90506000806124a68a8a610ab6565b602088018290526060880181905290925090506124c38783610835565b94505050945094509450949050565b6001600160a01b038085166000908152600860209081526040808320938716835292905290812060020154610c419061250c908590610835565b61251685856122da565b906122da565b6001600160a01b0386811660009081526008602090815260408083208985168085529083528184208251608081018452815487168152600180830154828701526002830154828601526003909201548716606082015295891685526006845282852091855292528220908101549054919283928392116125ab576125a4888260200151610835565b93506127a0565b6001600160a01b038781166000908152600660209081526040808320938d16835292905220600181015490546125e2908a9061551a565b10612637576001600160a01b038781166000908152600660209081526040808320938d16835292905220600181015490546125a49190612623908b9061551a565b61262d91906154a3565b8260200151610835565b600061264487600a61571e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa1580156126a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ca9190615960565b6126d4919061572a565b6126de9190615532565b6001600160a01b038981166000908152600660209081526040808320938f168352929052206001810154905491925090829061271b908c9061551a565b612725919061551a565b101561279e576001600160a01b038089166000908152600660209081526040808320938e1683529290522054819061275e908b9061551a565b612768919061551a565b6001600160a01b03808a166000908152600660209081526040808320938f168352929052206001015461279b91906154a3565b93505b505b6127aa88856122da565b91505096509650969350505050565b6001600160a01b0381166128345760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161097c565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808212156128ee576128e982615749565b611fd1565b5090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161297c91906158e1565b6000604051808303816000865af19150503d80600081146129b9576040519150601f19603f3d011682016040523d82523d6000602084013e6129be565b606091505b50915091508180156129e85750805115806129e85750808060200190518101906129e89190615979565b610a5a5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c656400000000000000000000000000000000000000606482015260840161097c565b600060036001600160a01b038316612a7457506001611fd1565b6004546001600160a01b0390811690841603611fd15750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691612b2591906158e1565b6000604051808303816000865af19150503d8060008114612b62576040519150601f19603f3d011682016040523d82523d6000602084013e612b67565b606091505b5091509150818015612b91575080511580612b91575080806020019051810190612b919190615979565b611c875760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c6564000000000000000000000000000000606482015260840161097c565b8651600303612c28576020870151600554612c2891906001600160a01b0316876138e4565b86516003148015612c3a575085516003145b8015612c44575081155b15612ce7576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed173990612c9a9088908890889030908890600401615996565b6000604051808303816000875af1158015612cb9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ce19190810190615586565b50612ea3565b86516003148015612cf9575085516003145b8015612d055750816001145b15612d5b576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee90612c9a9087908990889030908890600401615996565b86516003148015612d785750855160021480612d78575085516001145b8015612d845750816001145b15612dda576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a90612c9a9087908990889030908890600401615996565b865160021480612deb575086516001145b8015612df8575085516003145b8015612e045750816001145b15612ea3576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb41908790612e5a9088908890309088906004016159d2565b60006040518083038185885af1158015612e78573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612ea19190810190615586565b505b50505050505050565b6001600160a01b038084166000908152600760208181526040808420878616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b909201546101608301529081612f638686610ab6565b509050612f708482610835565b925060006040518060400160405280612f8888612a5a565b81526001600160a01b038816602090910152805190915060030361303b5782516001600160a01b0316301461303657612fc6868460000151866128f2565b82516001600160a01b03161580612fe7575082516001600160a01b03166001145b1561303657604080513381526001600160a01b03881660208201529081018590527fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b94539060600160405180910390a15b613058565b82516001600160a01b031630146130585782516130589085613a4c565b5050509392505050565b6001600160a01b03808516600090815260086020908152604080832087851684528252808320815160808101835281548616815260018201549381019390935260028101549183019190915260030154909216606083015290819081806130cb89898989613b2f565b3360009081526006602090815260408083206001600160a01b038f16845290915290206001810154905493995091945092501161311757613110868460200151610835565b9450613252565b3360009081526006602090815260408083206001600160a01b038c16845290915290206001810154905461314c90889061551a565b1061319f573360009081526006602090815260408083206001600160a01b038c168452909152902060018101549054613110919061318b90899061551a565b61319591906154a3565b8460200151610835565b60006131ac82600a61571e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa15801561320b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322f9190615960565b613239919061572a565b6132439190615532565b9050613250898883613f25565b505b61325c86866122da565b9350841561332057613273888460000151876128f2565b848360200151600d5487613287919061572a565b6132919190615532565b61329b91906154a3565b3360009081526006602090815260408083206001600160a01b038d168452909152812060010180549091906132d190849061551a565b9091555050604080513381526001600160a01b038a1660208201529081018690527f88dcaca629d63d86330e97adc358b13dd0ebd703239aea96b7ea2fb331b16f4e9060600160405180910390a15b61332b8833866128f2565b3360009081526006602090815260408083206001600160a01b038c1684529091528120805486929061335e90849061551a565b9250508190555050505094509492505050565b6000600a54600b5442613384919061551a565b61338e9190615532565b6001600160a01b0380861660008181526009602081815260408084208a871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b909101546101608201528151929350909115801561349d5750600c54155b156134fd576080810180516001600160a01b038089166000818152600960208181526040808420958d168085529582528084208b855282528084209690965595519382528552838120918152908452828120878252909352912055613557565b815160000361355757600c546001600160a01b038088166000818152600960208181526040808420958c168085529582528084208a8552825280842087905594835290815283822092825291825282812087825290915220555b600061356487878761408e565b6001600160a01b038089166000908152600960209081526040808320938b168352928152828220888352905220549091506135a28888848489614281565b50506001600160a01b038881166000818152600960208181526040808420958d168085529582528084208b855282528084206001908101899055958452918152818320938352928352808220898352835290819020909201849055600c84905581518781529081018490527fb9362b96e28efbb7a7e63bb4a97faf9924ec0394635feff8588a6ae2a5f784fe910160405180910390a15050505050505050565b6001600160a01b0381166136be5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161097c565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015613748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376c9190615a07565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b804710156137f75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161097c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613844576040519150601f19603f3d011682016040523d82523d6000602084013e613849565b606091505b50509050806109dc5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161097c565b60008060006138cf8585614500565b915091506138dc81614545565b509392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052915160009283929087169161396e91906158e1565b6000604051808303816000865af19150503d80600081146139ab576040519150601f19603f3d011682016040523d82523d6000602084013e6139b0565b606091505b50915091508180156139da5750805115806139da5750808060200190518101906139da9190615979565b610a5a5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c6564000000000000000000000000000000000000000000606482015260840161097c565b604080516000808252602082019092526001600160a01b038416908390604051613a7691906158e1565b60006040518083038185875af1925050503d8060008114613ab3576040519150601f19603f3d011682016040523d82523d6000602084013e613ab8565b606091505b50509050806109dc5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c6564000000000000000000000000606482015260840161097c565b6001600160a01b038085166000908152600760208181526040808420888616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b9092015461016083015290819081908180613beb8a8a610ab6565b91509150613bf98782610835565b60408085015190517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c809190615960565b1015613cf45760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e6365000000000000000000000000000000000000606482015260840161097c565b6000613d008883610835565b1115613d7957613d1e836040015133613d198a85610835565b6128f2565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd338460400151613d4f8a85610835565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a15b6001600160a01b03808b1660009081526008602090815260408083208d8516845282528083208151608081018352815486168152600182015493810193909352600281015491830182905260030154909316606082015291613ddc908a90610835565b1115613e6e576000613e03613df58a8460400151610835565b613dfe8c610856565b6146aa565b90507f340b543910b47fe717183f8972077c5d42343802898948d4dffc9cc82a4f6099338c613e368c8660400151610835565b604080516001600160a01b0394851681529284166020840152820152908e1660608201526080810183905260a00160405180910390a1505b8a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed09190615617565b60ff169450613ee9613ee386600a61571e565b8a610c4a565b95506000613ef78985610835565b9050613f14613f0a8a8460400151610835565b6125168b846122da565b975050505050509450945094915050565b3360009081526006602090815260408083206001600160a01b03871684529091529020600181015490548290613f5c90859061551a565b613f66919061551a565b10156109dc573360009081526006602090815260408083206001600160a01b03871684529091528120548290613f9d90859061551a565b613fa7919061551a565b3360009081526006602090815260408083206001600160a01b0389168452909152902060010154613fd891906154a3565b90508015614019573360009081526006602090815260408083206001600160a01b03881684529091528120805483929061401390849061551a565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a0016122c0565b6001600160a01b03808416600081815260086020908152604080832087861684528252808320815160808101835281548716815260018201549381019390935260028101549183019190915260030154909316606084018190529092918391900361417857846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141559190615617565b60ff16905061417161416882600a61571e565b61058586610856565b9250614278565b81606001516001600160a01b0316856001600160a01b03160361420a57856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f79190615617565b60ff1690506141716114b182600a61571e565b60405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d61726b65743a3a496c6c6567616c2076616c756174696f6e206360448201527f757272656e637900000000000000000000000000000000000000000000000000606482015260840161097c565b50509392505050565b6001600160a01b038086166000908152600760208181526040808420898616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e0820152600883015461010082015260098301546101208201819052600a840154610140830152600b90930154610160820152909182919061437f5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e2030000000604482015260640161097c565b600085116143cf5760405162461bcd60e51b815260206004820152601560248201527f546f6b656e4d61726b65743a3a6f70656e203e20300000000000000000000000604482015260640161097c565b8585111561441557610120810151600d5486906143ec89836154a3565b6143f6919061572a565b6144009190615532565b61440a9190615532565b925060009150614457565b8486111561445757610120810151600d548690614432828a6154a3565b61443c919061572a565b6144469190615532565b6144509190615532565b9250600191505b6000806144668a8a878761479a565b6001600160a01b038c81166000908152600960209081526040808320938f1683529281528282208b83529052206002810183905560030181905590925090506144b1898b878761479a565b6001600160a01b039a8b1660009081526009602090815260408083209e909d1682529c8d528b812098815297909b52989095206002810198909855505060039095019590955550929391925050565b60008082516041036145365760208301516040840151606085015160001a61452a87828585614a5c565b9450945050505061453e565b506000905060025b9250929050565b600081600481111561455957614559615a24565b036145615750565b600181600481111561457557614575615a24565b036145c25760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161097c565b60028160048111156145d6576145d6615a24565b036146235760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161097c565b600381600481111561463757614637615a24565b03610eb95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161097c565b600080826000815181106146c0576146c06154ba565b60200260200101519050600083600185516146db91906154a3565b815181106146eb576146eb6154ba565b602002602001015190506000604051806040016040528061470b85612a5a565b8152602001846001600160a01b031681525090506000604051806040016040528061473585612a5a565b8152602001846001600160a01b031681525090506147538787610c4a565b9450614763612710866000610c02565b9450600061477242600a61551a565b905061478483838a898b600087612c03565b61478f8433886128f2565b505050505092915050565b6000806000841315614a20576001600160a01b038681166000908152600760209081526040808320938916835292905220600a810154600b90910154846147f2576147e482615749565b91506147ef81615749565b90505b60006147fd836128d6565b13156148a85761480d8683615781565b935060008212614878576001600160a01b038089166000908152600760209081526040808320938b1683529290522060060154841315614873576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015493505b6148d4565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493506148d4565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493505b60006148df826128d6565b13156149ed576001600160a01b038089166000908152600760209081526040808320938b16835292905220600301546149188783615781565b614922919061583d565b92506000811261498d576001600160a01b038089166000908152600760209081526040808320938b1683529290522060080154831315614988576001600160a01b038089166000908152600760209081526040808320938b168352929052206008015492505b614a19565b6001600160a01b038089166000908152600760208181526040808420948c1684529390529190200154831215614988576001600160a01b038089166000908152600760208181526040808420948c16845293905291902001549250614a19565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015492505b5050614a53565b50506001600160a01b03848116600090815260076020908152604080832093871683529290522060018101546003909101545b94509492505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614a935750600090506003614a53565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614ae7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614b1057600060019250925050614a53565b9660009650945050505050565b60008060408385031215614b3057600080fd5b50508035926020909101359150565b6001600160a01b0381168114610eb957600080fd5b8035614b5f81614b3f565b919050565b60008060408385031215614b7757600080fd5b8235614b8281614b3f565b91506020830135614b9281614b3f565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715614bf057614bf0614b9d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614c1f57614c1f614b9d565b604052919050565b600067ffffffffffffffff821115614c4157614c41614b9d565b5060051b60200190565b600082601f830112614c5c57600080fd5b81356020614c71614c6c83614c27565b614bf6565b82815260059290921b84018101918181019086841115614c9057600080fd5b8286015b84811015614cb4578035614ca781614b3f565b8352918301918301614c94565b509695505050505050565b600060208284031215614cd157600080fd5b813567ffffffffffffffff811115614ce857600080fd5b614cf484828501614c4b565b949350505050565b600081518084526020808501945080840160005b83811015614d355781516001600160a01b031687529582019590820190600101614d10565b509495945050505050565b60208152600061084f6020830184614cfc565b600080600060608486031215614d6857600080fd5b8335614d7381614b3f565b92506020840135614d8381614b3f565b929592945050506040919091013590565b600082601f830112614da557600080fd5b813567ffffffffffffffff811115614dbf57614dbf614b9d565b614dd26020601f19601f84011601614bf6565b818152846020838601011115614de757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614e1c57600080fd5b853594506020860135614e2e81614b3f565b93506040860135925060608601359150608086013567ffffffffffffffff811115614e5857600080fd5b614e6488828901614d94565b9150509295509295909350565b60008060008060808587031215614e8757600080fd5b84359350602085013567ffffffffffffffff811115614ea557600080fd5b614eb187828801614c4b565b949794965050505060408301359260600135919050565b600060208284031215614eda57600080fd5b813567ffffffffffffffff811115614ef157600080fd5b614cf484828501614d94565b8015158114610eb957600080fd5b600080600060608486031215614f2057600080fd5b83359250602084013591506040840135614f3981614efd565b809150509250925092565b60008060408385031215614f5757600080fd5b82359150602083013567ffffffffffffffff811115614f7557600080fd5b614f8185828601614c4b565b9150509250929050565b600080600080600060a08688031215614fa357600080fd5b8535614fae81614b3f565b94506020860135614fbe81614b3f565b9350604086013567ffffffffffffffff811115614fda57600080fd5b614fe688828901614c4b565b935050606086013591506080860135614ffe81614b3f565b809150509295509295909350565b80516001600160a01b0316825260208101516020830152604081015161503d60408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b61020081016150ac828861500c565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b6000602082840312156150e457600080fd5b813561084f81614b3f565b60006080828403121561510157600080fd5b6040516080810181811067ffffffffffffffff8211171561512457615124614b9d565b604052905080823561513581614b3f565b808252506020830135602082015260408301356040820152606083013561515b81614b3f565b6060919091015292915050565b60008060008084860361024081121561518057600080fd5b853561518b81614b3f565b9450602086013561519b81614b3f565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082018113156151cf57600080fd5b6151d7614bcc565b91506151e560408801614b54565b8252606087013560208301526151fd60808801614b54565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050615278866101c087016150ef565b905092959194509250565b60008060006060848603121561529857600080fd5b83356152a381614b3f565b925060208401356152b381614b3f565b9150604084013567ffffffffffffffff8111156152cf57600080fd5b6152db86828701614c4b565b9150509250925092565b6101c081016152f4828661500c565b6101808201939093526101a00152919050565b600082601f83011261531857600080fd5b81356020615328614c6c83614c27565b82815260059290921b8401810191818101908684111561534757600080fd5b8286015b84811015614cb4578035835291830191830161534b565b6000806000806080858703121561537857600080fd5b843567ffffffffffffffff8082111561539057600080fd5b61539c88838901615307565b955060208701359150808211156153b257600080fd5b6153be88838901614c4b565b945060408701359150808211156153d457600080fd5b6153e088838901614c4b565b935060608701359150808211156153f657600080fd5b5061540387828801615307565b91505092959194509250565b60008060008060008060c0878903121561542857600080fd5b863567ffffffffffffffff81111561543f57600080fd5b61544b89828a01614c4b565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156154b5576154b5615474565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060001982036154fc576154fc615474565b5060010190565b60008161551257615512615474565b506000190190565b6000821982111561552d5761552d615474565b500190565b600082615568577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b828152604060208201526000614cf46040830184614cfc565b6000602080838503121561559957600080fd5b825167ffffffffffffffff8111156155b057600080fd5b8301601f810185136155c157600080fd5b80516155cf614c6c82614c27565b81815260059190911b820183019083810190878311156155ee57600080fd5b928401925b8284101561560c578351825292840192908401906155f3565b979650505050505050565b60006020828403121561562957600080fd5b815160ff8116811461084f57600080fd5b600181815b8085111561567557816000190482111561565b5761565b615474565b8085161561566857918102915b93841c939080029061563f565b509250929050565b60008261568c57506001611fd1565b8161569957506000611fd1565b81600181146156af57600281146156b9576156d5565b6001915050611fd1565b60ff8411156156ca576156ca615474565b50506001821b611fd1565b5060208310610133831016604e8410600b84101617156156f8575081810a611fd1565b615702838361563a565b806000190482111561571657615716615474565b029392505050565b600061084f838361567d565b600081600019048311821515161561574457615744615474565b500290565b60007f8000000000000000000000000000000000000000000000000000000000000000820361577a5761577a615474565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156157c2576157c2615474565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156157fd576157fd615474565b6000871292508782058712848416161561581957615819615474565b8785058712818416161561582f5761582f615474565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561587757615877615474565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156158ab576158ab615474565b50500190565b60005b838110156158cc5781810151838201526020016158b4565b838111156158db576000848401525b50505050565b600082516158f38184602087016158b1565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c08401526159478160e08501602087016158b1565b601f01601f19169190910160e001979650505050505050565b60006020828403121561597257600080fd5b5051919050565b60006020828403121561598b57600080fd5b815161084f81614efd565b85815284602082015260a0604082015260006159b560a0830186614cfc565b6001600160a01b0394909416606083015250608001529392505050565b8481526080602082015260006159eb6080830186614cfc565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215615a1957600080fd5b815161084f81614b3f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220dbfa871055b908dbb65e31135b9facbd77c08dd19832eb0a6447a122bb36c2ae64736f6c634300080e0033",
1388
- "deployedBytecode": "0x6080604052600436106101e75760003560e01c806362a766031161010e5780639bad44e8116100a7578063d738eba111610079578063eed8386c11610061578063eed8386c14610799578063f2fde38b146107d6578063fe8691b4146107f657005b8063d738eba114610759578063d96661ef1461077957005b80639bad44e8146106f0578063a6a3694a14610710578063aa5d448f14610723578063b18019861461074357005b80637aaa9b02116100e05780637aaa9b021461061057806381f3fdc3146106305780638da5cb5b1461065f5780639065a9af1461067d57005b806362a766031461058a5780636f151a38146105bb578063715018a6146105db578063744cfdd9146105f057005b80632926e5de1161018057806340216a831161015257806340216a83146104ff57806343d726d6146105345780635c8181211461054a5780635ff530f21461056a57005b80632926e5de1461037b5780632bd2c18d1461047457806334e3f92d146104945780633fc8cef3146104df57005b80631b153401116101b95780631b153401146102ed5780631f8c24de1461030d578063238ac9331461032d57806327af9e381461036557005b8063016eb8a8146101f0578063089afeae146102235780630d83b1e4146102aa5780630fcc40c4146102c057005b366101ee57005b005b3480156101fc57600080fd5b5061021061020b366004614b1d565b610835565b6040519081526020015b60405180910390f35b34801561022f57600080fd5b5061027b61023e366004614b64565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391921684565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800161021a565b3480156102b657600080fd5b50610210600d5481565b3480156102cc57600080fd5b506102e06102db366004614cbf565b610856565b60405161021a9190614d40565b3480156102f957600080fd5b506101ee610308366004614d53565b610926565b34801561031957600080fd5b506101ee610328366004614e04565b6109e1565b34801561033957600080fd5b5060025461034d906001600160a01b031681565b6040516001600160a01b03909116815260200161021a565b34801561037157600080fd5b50610210600a5481565b34801561038757600080fd5b5061040a610396366004614b64565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e08501526101008401526101208301526101408201526101608101919091526101800161021a565b34801561048057600080fd5b5061021061048f366004614e71565b610a61565b3480156104a057600080fd5b506104cf6104af366004614ec8565b805160208183018101805160038252928201919093012091525460ff1681565b604051901515815260200161021a565b3480156104eb57600080fd5b5060045461034d906001600160a01b031681565b34801561050b57600080fd5b5061051f61051a366004614b64565b610ab6565b6040805192835260208301919091520161021a565b34801561054057600080fd5b50610210600c5481565b34801561055657600080fd5b50610210610565366004614f0b565b610c02565b34801561057657600080fd5b50610210610585366004614f44565b610c4a565b34801561059657600080fd5b506105aa6105a5366004614f8b565b610d8e565b60405161021a95949392919061509d565b3480156105c757600080fd5b506101ee6105d63660046150d2565b610e56565b3480156105e757600080fd5b506101ee610ebc565b3480156105fc57600080fd5b5061021061060b366004614f44565b610f22565b34801561061c57600080fd5b506101ee61062b366004615168565b61104c565b34801561063c57600080fd5b5061065061064b366004615283565b611308565b60405161021a939291906152e5565b34801561066b57600080fd5b506000546001600160a01b031661034d565b34801561068957600080fd5b506106d0610698366004614d53565b600960209081526000938452604080852082529284528284209052825290208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161021a565b3480156106fc57600080fd5b506101ee61070b366004615362565b6116d8565b6101ee61071e36600461540f565b61195a565b34801561072f57600080fd5b506101ee61073e3660046150d2565b611c8f565b34801561074f57600080fd5b50610210600b5481565b34801561076557600080fd5b506101ee610774366004614b1d565b611cf2565b34801561078557600080fd5b5060055461034d906001600160a01b031681565b3480156107a557600080fd5b506107b96107b4366004614b64565b611d57565b604080519283526001600160a01b0390911660208301520161021a565b3480156107e257600080fd5b506101ee6107f13660046150d2565b611ee6565b34801561080257600080fd5b5061051f610811366004614b64565b60066020908152600092835260408084209091529082529020805460019091015482565b600d5460009061084f906108498585611fc5565b90611fd7565b9392505050565b805160609060008167ffffffffffffffff81111561087657610876614b9d565b60405190808252806020026020018201604052801561089f578160200160208202803683370190505b5090506000825b6001811061091c57856108ba6001836154a3565b815181106108ca576108ca6154ba565b60200260200101518383815181106108e4576108e46154ba565b6001600160a01b039092166020928302919091019091015281610906816154e9565b925050808061091490615503565b9150506108a6565b5090949350505050565b6000546001600160a01b031633146109855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610990838383611fe3565b6109dc5760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c00000000000000000000604482015260640161097c565b505050565b6109e961201a565b6109f68585858585612073565b610a028585858461225f565b814210610a515760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e000000604482015260640161097c565b610a5a60018055565b5050505050565b60008080848103610a8e57610a768787610c4a565b9150610a8484836000610c02565b9150819250610aac565b610a988787610f22565b9050610aa684826001610c02565b90508092505b5050949350505050565b6000806000600a54600b5442610acc919061551a565b610ad69190615532565b6001600160a01b0380871660008181526007602081815260408084208b87168086529083528185208251610180810184528154891681526001820154818601526002820154909816888401526003810154606089015260048101546080890152600581015460a0890152600681015460c08901529384015460e08801526008840154610100880152600980850154610120890152600a850154610140890152600b909401546101608801529484529181528183209383529283528082208583529092529081205492935090919003610bbb578060200151935080606001519250610bf9565b6001600160a01b0386811660009081526009602090815260408083209389168352928152828220858352905220600281015460039091015490945092505b50509250929050565b600060018215610c2057600d54610c1990866122ce565b9050610c30565b600d54610c2d90866122da565b90505b600d54610c41906108498684611fc5565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f90610c9a908790879060040161556d565b600060405180830381865afa158015610cb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cdf9190810190615586565b905080610cf7600183516122da90919063ffffffff16565b81518110610d0757610d076154ba565b6020026020010151915060008211610d875760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e20300000000000000000000000000000000000606482015260840161097c565b5092915050565b610e0460405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600080600080600080610e198c8c8c8c6122e6565b92995090945092509050610e2f8c8c8b866124d2565b9850610e3f8c8c8b8b868661251c565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610eb05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b610eb9816127b9565b50565b6000546001600160a01b03163314610f165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b610f20600061286e565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca7490610f72908790879060040161556d565b600060405180830381865afa158015610f8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fb79190810190615586565b905080600081518110610fcc57610fcc6154ba565b6020026020010151915060008211610d875760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e2030000000000000000000000000000000000000606482015260840161097c565b6000546001600160a01b031633146110a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b6000826060015112156110fb5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d20300000000000000000604482015260640161097c565b6000826020015112156111505760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d203000000000000000604482015260640161097c565b836001600160a01b031681606001516001600160a01b031614806111895750826001600160a01b031681606001516001600160a01b0316145b6111d55760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e6700000000604482015260640161097c565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b61137e60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa15801561147a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149e9190615617565b60ff1691506114b76114b183600a61571e565b85610c4a565b90506000808285608001511115611509576101208501516080860151600d546114e086836154a3565b6114ea919061572a565b6114f49190615532565b6114fe9190615532565b905060009150611552565b8460800151831115611552576101208501516080860151600d5461152d82876154a3565b611537919061572a565b6115419190615532565b61154b9190615532565b9050600191505b60008113156116cd57608085018390526101408501516101608601518361158a5761157c82615749565b915061158781615749565b90505b600082126115cd5760208701516115a18484615781565b6115ab919061583d565b6020880181905260c088015112156115c85760c087015160208801525b611629565b86602001518760a00151846115e1856128d6565b6115eb9190615781565b6115f5919061583d565b131561160a5760a08701516020880152611629565b60208701516116198484615781565b611623919061583d565b60208801525b6000811261166e5760608701516116408483615781565b61164a919061583d565b6060880181905261010088015112156116695761010087015160608801525b6116ca565b86606001518760e0015184611682846128d6565b61168c9190615781565b611696919061583d565b13156116ab5760e087015160608801526116ca565b60608701516116ba8483615781565b6116c4919061583d565b60608801525b50505b505093509350939050565b6000546001600160a01b031633146117325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b82518451146117835760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604482015260640161097c565b81518351146117d45760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604482015260640161097c565b80518251146118255760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604482015260640161097c565b60005b8451811015610a5a57611887838281518110611846576118466154ba565b6020026020010151858381518110611860576118606154ba565b602002602001015184848151811061187a5761187a6154ba565b60200260200101516128f2565b7fd854fbf5db341a7d003a14ee8ed089e806c8731c6aca5fb4b89095d0a230ccd08582815181106118ba576118ba6154ba565b60200260200101518583815181106118d4576118d46154ba565b60200260200101518584815181106118ee576118ee6154ba565b6020026020010151858581518110611908576119086154ba565b602002602001015160405161194094939291909384526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a180611952816154e9565b915050611828565b61196261201a565b3332146119b15760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c65720000000000604482015260640161097c565b333b15611a255760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c7300000000000000000000000000000000000000000000000000000000606482015260840161097c565b82600003611a4c57611a378587610c4a565b9350611a4581856000610c02565b9350611a67565b611a568487610f22565b9450611a6481866001610c02565b94505b600086600081518110611a7c57611a7c6154ba565b6020026020010151905060008760018951611a9791906154a3565b81518110611aa757611aa76154ba565b6020908102919091018101513360009081526006835260408082206001600160a01b0387168352909352918220600101805491935089929091611aeb90849061551a565b9250508190555060006040518060400160405280611b0885612a5a565b8152602001846001600160a01b0316815250905060006040518060400160405280611b3285612a5a565b81526001600160a01b0385166020909101528251909150600303611b6157611b5c8433308c612a93565b611bd6565b883414611bd65760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f6375726174650000000000000000000000000000000000000000000000000000606482015260840161097c565b611be582828b8b8e8c8c612c03565b6000611bf285858b612eac565b9050600080611c0387878f8e613062565b91509150611c1287878f613371565b604080513381526001600160a01b038981166020830152881681830152606081018e90526080810185905260a0810184905260c0810183905290517f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49181900360e00190a150505050505050611c8760018055565b505050505050565b6000546001600160a01b03163314611ce95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b610eb981613642565b6000546001600160a01b03163314611d4c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b600a91909155600b55565b6000806000600a54600b5442611d6d919061551a565b611d779190615532565b6001600160a01b0380871660008181526009602081815260408084208b871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b9091015461016082015281519293509091158015611e865750600c54155b15611e975780608001519450611eaf565b8151600003611eaa57600c549450611eaf565b815194505b505050506001600160a01b039283166000908152600860209081526040808320948616835293905291909120600301549092911690565b6000546001600160a01b03163314611f405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b6001600160a01b038116611fbc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161097c565b610eb98161286e565b600061084f828461572a565b92915050565b600061084f8284615532565b60006001600160a01b03841661200557611ffd83836137a7565b50600161084f565b6120108484846128f2565b5060019392505050565b60026001540361206c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161097c565b6002600155565b60038160405161208391906158e1565b9081526040519081900360200190205460ff16156120e35760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a63657274696669636174652065787069726564604482015260640161097c565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e8840152610104808401919091528351808403909101815261012490920190925280519101206000906121a790836138c0565b6002549091506001600160a01b038083169116146122075760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c6964206365727469666963617465604482015260640161097c565b600160038360405161221991906158e1565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b03831661227c5761227733836137a7565b612287565b6122878333846128f2565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d3385858542866040516122c0969594939291906158fd565b60405180910390a150505050565b600061084f828461551a565b600061084f82846154a3565b61235c60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa15801561245a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247e9190615617565b60ff16915061249761249183600a61571e565b87610c4a565b90506000806124a68a8a610ab6565b602088018290526060880181905290925090506124c38783610835565b94505050945094509450949050565b6001600160a01b038085166000908152600860209081526040808320938716835292905290812060020154610c419061250c908590610835565b61251685856122da565b906122da565b6001600160a01b0386811660009081526008602090815260408083208985168085529083528184208251608081018452815487168152600180830154828701526002830154828601526003909201548716606082015295891685526006845282852091855292528220908101549054919283928392116125ab576125a4888260200151610835565b93506127a0565b6001600160a01b038781166000908152600660209081526040808320938d16835292905220600181015490546125e2908a9061551a565b10612637576001600160a01b038781166000908152600660209081526040808320938d16835292905220600181015490546125a49190612623908b9061551a565b61262d91906154a3565b8260200151610835565b600061264487600a61571e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa1580156126a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ca9190615960565b6126d4919061572a565b6126de9190615532565b6001600160a01b038981166000908152600660209081526040808320938f168352929052206001810154905491925090829061271b908c9061551a565b612725919061551a565b101561279e576001600160a01b038089166000908152600660209081526040808320938e1683529290522054819061275e908b9061551a565b612768919061551a565b6001600160a01b03808a166000908152600660209081526040808320938f168352929052206001015461279b91906154a3565b93505b505b6127aa88856122da565b91505096509650969350505050565b6001600160a01b0381166128345760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161097c565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808212156128ee576128e982615749565b611fd1565b5090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161297c91906158e1565b6000604051808303816000865af19150503d80600081146129b9576040519150601f19603f3d011682016040523d82523d6000602084013e6129be565b606091505b50915091508180156129e85750805115806129e85750808060200190518101906129e89190615979565b610a5a5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c656400000000000000000000000000000000000000606482015260840161097c565b600060036001600160a01b038316612a7457506001611fd1565b6004546001600160a01b0390811690841603611fd15750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691612b2591906158e1565b6000604051808303816000865af19150503d8060008114612b62576040519150601f19603f3d011682016040523d82523d6000602084013e612b67565b606091505b5091509150818015612b91575080511580612b91575080806020019051810190612b919190615979565b611c875760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c6564000000000000000000000000000000606482015260840161097c565b8651600303612c28576020870151600554612c2891906001600160a01b0316876138e4565b86516003148015612c3a575085516003145b8015612c44575081155b15612ce7576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed173990612c9a9088908890889030908890600401615996565b6000604051808303816000875af1158015612cb9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ce19190810190615586565b50612ea3565b86516003148015612cf9575085516003145b8015612d055750816001145b15612d5b576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee90612c9a9087908990889030908890600401615996565b86516003148015612d785750855160021480612d78575085516001145b8015612d845750816001145b15612dda576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a90612c9a9087908990889030908890600401615996565b865160021480612deb575086516001145b8015612df8575085516003145b8015612e045750816001145b15612ea3576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb41908790612e5a9088908890309088906004016159d2565b60006040518083038185885af1158015612e78573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612ea19190810190615586565b505b50505050505050565b6001600160a01b038084166000908152600760208181526040808420878616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b909201546101608301529081612f638686610ab6565b509050612f708482610835565b925060006040518060400160405280612f8888612a5a565b81526001600160a01b038816602090910152805190915060030361303b5782516001600160a01b0316301461303657612fc6868460000151866128f2565b82516001600160a01b03161580612fe7575082516001600160a01b03166001145b1561303657604080513381526001600160a01b03881660208201529081018590527fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b94539060600160405180910390a15b613058565b82516001600160a01b031630146130585782516130589085613a4c565b5050509392505050565b6001600160a01b03808516600090815260086020908152604080832087851684528252808320815160808101835281548616815260018201549381019390935260028101549183019190915260030154909216606083015290819081806130cb89898989613b2f565b3360009081526006602090815260408083206001600160a01b038f16845290915290206001810154905493995091945092501161311757613110868460200151610835565b9450613252565b3360009081526006602090815260408083206001600160a01b038c16845290915290206001810154905461314c90889061551a565b1061319f573360009081526006602090815260408083206001600160a01b038c168452909152902060018101549054613110919061318b90899061551a565b61319591906154a3565b8460200151610835565b60006131ac82600a61571e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa15801561320b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322f9190615960565b613239919061572a565b6132439190615532565b9050613250898883613f25565b505b61325c86866122da565b9350841561332057613273888460000151876128f2565b848360200151600d5487613287919061572a565b6132919190615532565b61329b91906154a3565b3360009081526006602090815260408083206001600160a01b038d168452909152812060010180549091906132d190849061551a565b9091555050604080513381526001600160a01b038a1660208201529081018690527f88dcaca629d63d86330e97adc358b13dd0ebd703239aea96b7ea2fb331b16f4e9060600160405180910390a15b61332b8833866128f2565b3360009081526006602090815260408083206001600160a01b038c1684529091528120805486929061335e90849061551a565b9250508190555050505094509492505050565b6000600a54600b5442613384919061551a565b61338e9190615532565b6001600160a01b0380861660008181526009602081815260408084208a871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b909101546101608201528151929350909115801561349d5750600c54155b156134fd576080810180516001600160a01b038089166000818152600960208181526040808420958d168085529582528084208b855282528084209690965595519382528552838120918152908452828120878252909352912055613557565b815160000361355757600c546001600160a01b038088166000818152600960208181526040808420958c168085529582528084208a8552825280842087905594835290815283822092825291825282812087825290915220555b600061356487878761408e565b6001600160a01b038089166000908152600960209081526040808320938b168352928152828220888352905220549091506135a28888848489614281565b50506001600160a01b038881166000818152600960208181526040808420958d168085529582528084208b855282528084206001908101899055958452918152818320938352928352808220898352835290819020909201849055600c84905581518781529081018490527fb9362b96e28efbb7a7e63bb4a97faf9924ec0394635feff8588a6ae2a5f784fe910160405180910390a15050505050505050565b6001600160a01b0381166136be5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161097c565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015613748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376c9190615a07565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b804710156137f75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161097c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613844576040519150601f19603f3d011682016040523d82523d6000602084013e613849565b606091505b50509050806109dc5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161097c565b60008060006138cf8585614500565b915091506138dc81614545565b509392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052915160009283929087169161396e91906158e1565b6000604051808303816000865af19150503d80600081146139ab576040519150601f19603f3d011682016040523d82523d6000602084013e6139b0565b606091505b50915091508180156139da5750805115806139da5750808060200190518101906139da9190615979565b610a5a5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c6564000000000000000000000000000000000000000000606482015260840161097c565b604080516000808252602082019092526001600160a01b038416908390604051613a7691906158e1565b60006040518083038185875af1925050503d8060008114613ab3576040519150601f19603f3d011682016040523d82523d6000602084013e613ab8565b606091505b50509050806109dc5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c6564000000000000000000000000606482015260840161097c565b6001600160a01b038085166000908152600760208181526040808420888616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b9092015461016083015290819081908180613beb8a8a610ab6565b91509150613bf98782610835565b60408085015190517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c809190615960565b1015613cf45760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e6365000000000000000000000000000000000000606482015260840161097c565b6000613d008883610835565b1115613d7957613d1e836040015133613d198a85610835565b6128f2565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd338460400151613d4f8a85610835565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a15b6001600160a01b03808b1660009081526008602090815260408083208d8516845282528083208151608081018352815486168152600182015493810193909352600281015491830182905260030154909316606082015291613ddc908a90610835565b1115613e6e576000613e03613df58a8460400151610835565b613dfe8c610856565b6146aa565b90507f340b543910b47fe717183f8972077c5d42343802898948d4dffc9cc82a4f6099338c613e368c8660400151610835565b604080516001600160a01b0394851681529284166020840152820152908e1660608201526080810183905260a00160405180910390a1505b8a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed09190615617565b60ff169450613ee9613ee386600a61571e565b8a610c4a565b95506000613ef78985610835565b9050613f14613f0a8a8460400151610835565b6125168b846122da565b975050505050509450945094915050565b3360009081526006602090815260408083206001600160a01b03871684529091529020600181015490548290613f5c90859061551a565b613f66919061551a565b10156109dc573360009081526006602090815260408083206001600160a01b03871684529091528120548290613f9d90859061551a565b613fa7919061551a565b3360009081526006602090815260408083206001600160a01b0389168452909152902060010154613fd891906154a3565b90508015614019573360009081526006602090815260408083206001600160a01b03881684529091528120805483929061401390849061551a565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a0016122c0565b6001600160a01b03808416600081815260086020908152604080832087861684528252808320815160808101835281548716815260018201549381019390935260028101549183019190915260030154909316606084018190529092918391900361417857846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141559190615617565b60ff16905061417161416882600a61571e565b61058586610856565b9250614278565b81606001516001600160a01b0316856001600160a01b03160361420a57856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f79190615617565b60ff1690506141716114b182600a61571e565b60405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d61726b65743a3a496c6c6567616c2076616c756174696f6e206360448201527f757272656e637900000000000000000000000000000000000000000000000000606482015260840161097c565b50509392505050565b6001600160a01b038086166000908152600760208181526040808420898616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e0820152600883015461010082015260098301546101208201819052600a840154610140830152600b90930154610160820152909182919061437f5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e2030000000604482015260640161097c565b600085116143cf5760405162461bcd60e51b815260206004820152601560248201527f546f6b656e4d61726b65743a3a6f70656e203e20300000000000000000000000604482015260640161097c565b8585111561441557610120810151600d5486906143ec89836154a3565b6143f6919061572a565b6144009190615532565b61440a9190615532565b925060009150614457565b8486111561445757610120810151600d548690614432828a6154a3565b61443c919061572a565b6144469190615532565b6144509190615532565b9250600191505b6000806144668a8a878761479a565b6001600160a01b038c81166000908152600960209081526040808320938f1683529281528282208b83529052206002810183905560030181905590925090506144b1898b878761479a565b6001600160a01b039a8b1660009081526009602090815260408083209e909d1682529c8d528b812098815297909b52989095206002810198909855505060039095019590955550929391925050565b60008082516041036145365760208301516040840151606085015160001a61452a87828585614a5c565b9450945050505061453e565b506000905060025b9250929050565b600081600481111561455957614559615a24565b036145615750565b600181600481111561457557614575615a24565b036145c25760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161097c565b60028160048111156145d6576145d6615a24565b036146235760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161097c565b600381600481111561463757614637615a24565b03610eb95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161097c565b600080826000815181106146c0576146c06154ba565b60200260200101519050600083600185516146db91906154a3565b815181106146eb576146eb6154ba565b602002602001015190506000604051806040016040528061470b85612a5a565b8152602001846001600160a01b031681525090506000604051806040016040528061473585612a5a565b8152602001846001600160a01b031681525090506147538787610c4a565b9450614763612710866000610c02565b9450600061477242600a61551a565b905061478483838a898b600087612c03565b61478f8433886128f2565b505050505092915050565b6000806000841315614a20576001600160a01b038681166000908152600760209081526040808320938916835292905220600a810154600b90910154846147f2576147e482615749565b91506147ef81615749565b90505b60006147fd836128d6565b13156148a85761480d8683615781565b935060008212614878576001600160a01b038089166000908152600760209081526040808320938b1683529290522060060154841315614873576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015493505b6148d4565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493506148d4565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493505b60006148df826128d6565b13156149ed576001600160a01b038089166000908152600760209081526040808320938b16835292905220600301546149188783615781565b614922919061583d565b92506000811261498d576001600160a01b038089166000908152600760209081526040808320938b1683529290522060080154831315614988576001600160a01b038089166000908152600760209081526040808320938b168352929052206008015492505b614a19565b6001600160a01b038089166000908152600760208181526040808420948c1684529390529190200154831215614988576001600160a01b038089166000908152600760208181526040808420948c16845293905291902001549250614a19565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015492505b5050614a53565b50506001600160a01b03848116600090815260076020908152604080832093871683529290522060018101546003909101545b94509492505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614a935750600090506003614a53565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614ae7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614b1057600060019250925050614a53565b9660009650945050505050565b60008060408385031215614b3057600080fd5b50508035926020909101359150565b6001600160a01b0381168114610eb957600080fd5b8035614b5f81614b3f565b919050565b60008060408385031215614b7757600080fd5b8235614b8281614b3f565b91506020830135614b9281614b3f565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715614bf057614bf0614b9d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614c1f57614c1f614b9d565b604052919050565b600067ffffffffffffffff821115614c4157614c41614b9d565b5060051b60200190565b600082601f830112614c5c57600080fd5b81356020614c71614c6c83614c27565b614bf6565b82815260059290921b84018101918181019086841115614c9057600080fd5b8286015b84811015614cb4578035614ca781614b3f565b8352918301918301614c94565b509695505050505050565b600060208284031215614cd157600080fd5b813567ffffffffffffffff811115614ce857600080fd5b614cf484828501614c4b565b949350505050565b600081518084526020808501945080840160005b83811015614d355781516001600160a01b031687529582019590820190600101614d10565b509495945050505050565b60208152600061084f6020830184614cfc565b600080600060608486031215614d6857600080fd5b8335614d7381614b3f565b92506020840135614d8381614b3f565b929592945050506040919091013590565b600082601f830112614da557600080fd5b813567ffffffffffffffff811115614dbf57614dbf614b9d565b614dd26020601f19601f84011601614bf6565b818152846020838601011115614de757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614e1c57600080fd5b853594506020860135614e2e81614b3f565b93506040860135925060608601359150608086013567ffffffffffffffff811115614e5857600080fd5b614e6488828901614d94565b9150509295509295909350565b60008060008060808587031215614e8757600080fd5b84359350602085013567ffffffffffffffff811115614ea557600080fd5b614eb187828801614c4b565b949794965050505060408301359260600135919050565b600060208284031215614eda57600080fd5b813567ffffffffffffffff811115614ef157600080fd5b614cf484828501614d94565b8015158114610eb957600080fd5b600080600060608486031215614f2057600080fd5b83359250602084013591506040840135614f3981614efd565b809150509250925092565b60008060408385031215614f5757600080fd5b82359150602083013567ffffffffffffffff811115614f7557600080fd5b614f8185828601614c4b565b9150509250929050565b600080600080600060a08688031215614fa357600080fd5b8535614fae81614b3f565b94506020860135614fbe81614b3f565b9350604086013567ffffffffffffffff811115614fda57600080fd5b614fe688828901614c4b565b935050606086013591506080860135614ffe81614b3f565b809150509295509295909350565b80516001600160a01b0316825260208101516020830152604081015161503d60408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b61020081016150ac828861500c565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b6000602082840312156150e457600080fd5b813561084f81614b3f565b60006080828403121561510157600080fd5b6040516080810181811067ffffffffffffffff8211171561512457615124614b9d565b604052905080823561513581614b3f565b808252506020830135602082015260408301356040820152606083013561515b81614b3f565b6060919091015292915050565b60008060008084860361024081121561518057600080fd5b853561518b81614b3f565b9450602086013561519b81614b3f565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082018113156151cf57600080fd5b6151d7614bcc565b91506151e560408801614b54565b8252606087013560208301526151fd60808801614b54565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050615278866101c087016150ef565b905092959194509250565b60008060006060848603121561529857600080fd5b83356152a381614b3f565b925060208401356152b381614b3f565b9150604084013567ffffffffffffffff8111156152cf57600080fd5b6152db86828701614c4b565b9150509250925092565b6101c081016152f4828661500c565b6101808201939093526101a00152919050565b600082601f83011261531857600080fd5b81356020615328614c6c83614c27565b82815260059290921b8401810191818101908684111561534757600080fd5b8286015b84811015614cb4578035835291830191830161534b565b6000806000806080858703121561537857600080fd5b843567ffffffffffffffff8082111561539057600080fd5b61539c88838901615307565b955060208701359150808211156153b257600080fd5b6153be88838901614c4b565b945060408701359150808211156153d457600080fd5b6153e088838901614c4b565b935060608701359150808211156153f657600080fd5b5061540387828801615307565b91505092959194509250565b60008060008060008060c0878903121561542857600080fd5b863567ffffffffffffffff81111561543f57600080fd5b61544b89828a01614c4b565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156154b5576154b5615474565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060001982036154fc576154fc615474565b5060010190565b60008161551257615512615474565b506000190190565b6000821982111561552d5761552d615474565b500190565b600082615568577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b828152604060208201526000614cf46040830184614cfc565b6000602080838503121561559957600080fd5b825167ffffffffffffffff8111156155b057600080fd5b8301601f810185136155c157600080fd5b80516155cf614c6c82614c27565b81815260059190911b820183019083810190878311156155ee57600080fd5b928401925b8284101561560c578351825292840192908401906155f3565b979650505050505050565b60006020828403121561562957600080fd5b815160ff8116811461084f57600080fd5b600181815b8085111561567557816000190482111561565b5761565b615474565b8085161561566857918102915b93841c939080029061563f565b509250929050565b60008261568c57506001611fd1565b8161569957506000611fd1565b81600181146156af57600281146156b9576156d5565b6001915050611fd1565b60ff8411156156ca576156ca615474565b50506001821b611fd1565b5060208310610133831016604e8410600b84101617156156f8575081810a611fd1565b615702838361563a565b806000190482111561571657615716615474565b029392505050565b600061084f838361567d565b600081600019048311821515161561574457615744615474565b500290565b60007f8000000000000000000000000000000000000000000000000000000000000000820361577a5761577a615474565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156157c2576157c2615474565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156157fd576157fd615474565b6000871292508782058712848416161561581957615819615474565b8785058712818416161561582f5761582f615474565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561587757615877615474565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156158ab576158ab615474565b50500190565b60005b838110156158cc5781810151838201526020016158b4565b838111156158db576000848401525b50505050565b600082516158f38184602087016158b1565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c08401526159478160e08501602087016158b1565b601f01601f19169190910160e001979650505050505050565b60006020828403121561597257600080fd5b5051919050565b60006020828403121561598b57600080fd5b815161084f81614efd565b85815284602082015260a0604082015260006159b560a0830186614cfc565b6001600160a01b0394909416606083015250608001529392505050565b8481526080602082015260006159eb6080830186614cfc565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215615a1957600080fd5b815161084f81614b3f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220dbfa871055b908dbb65e31135b9facbd77c08dd19832eb0a6447a122bb36c2ae64736f6c634300080e0033",
1472
+ "bytecode": "0x608060405262015180600a556000600b556305f5e1006010553480156200002557600080fd5b5060405162006187380380620061878339810160408190526200004891620001fb565b620000533362000085565b60018055600280546001600160a01b0319166001600160a01b0384161790556200007d81620000d5565b505062000258565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166200013b5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b606482015260840160405180910390fd5b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000195573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bb919062000233565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b80516001600160a01b0381168114620001f657600080fd5b919050565b600080604083850312156200020f57600080fd5b6200021a83620001de565b91506200022a60208401620001de565b90509250929050565b6000602082840312156200024657600080fd5b6200025182620001de565b9392505050565b615f1f80620002686000396000f3fe6080604052600436106102175760003560e01c806362a76603116101265780639bad44e8116100a7578063d738eba111610079578063eed8386c11610061578063eed8386c14610855578063f2fde38b14610892578063fe8691b4146108b257005b8063d738eba114610815578063d96661ef1461083557005b80639bad44e8146107ac578063a6a3694a146107cc578063aa5d448f146107df578063b1801986146107ff57005b8063744cfdd9116100f857806381f3fdc3116100e057806381f3fdc3146106ec5780638da5cb5b1461071b5780639065a9af1461073957005b8063744cfdd9146106ac5780637aaa9b02146106cc57005b806362a766031461062657806364394115146106575780636f151a3814610677578063715018a61461069757005b806327af9e38116101b05780633fc8cef31161018257806343d726d61161016a57806343d726d6146105d05780635c818121146105e65780635ff530f21461060657005b80633fc8cef31461054957806340216a831461056957005b806327af9e38146103cf5780632926e5de146103e55780632bd2c18d146104de57806334e3f92d146104fe57005b80630fcc40c4116101e95780630fcc40c41461032a5780631b153401146103575780631f8c24de14610377578063238ac9331461039757005b8063016eb8a814610220578063089afeae14610253578063092e469f146102da5780630d83b1e41461031457005b3661021e57005b005b34801561022c57600080fd5b5061024061023b366004614fc9565b610906565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b506102ab61026e366004615010565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391921684565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800161024a565b3480156102e657600080fd5b50600d54600e54600f546102f992919083565b6040805193845260208401929092529082015260600161024a565b34801561032057600080fd5b5061024060105481565b34801561033657600080fd5b5061034a610345366004615152565b610927565b60405161024a91906151d3565b34801561036357600080fd5b5061021e6103723660046151e6565b6109f7565b34801561038357600080fd5b5061021e610392366004615297565b610ab2565b3480156103a357600080fd5b506002546103b7906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b3480156103db57600080fd5b50610240600a5481565b3480156103f157600080fd5b50610474610400366004615010565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e08501526101008401526101208301526101408201526101608101919091526101800161024a565b3480156104ea57600080fd5b506102406104f9366004615304565b610b32565b34801561050a57600080fd5b5061053961051936600461535b565b805160208183018101805160038252928201919093012091525460ff1681565b604051901515815260200161024a565b34801561055557600080fd5b506004546103b7906001600160a01b031681565b34801561057557600080fd5b50610589610584366004615010565b610b87565b604080519586526020808701959095528351868201529383015160608601529190920151608084015260a08301919091526001600160a01b031660c082015260e00161024a565b3480156105dc57600080fd5b50610240600c5481565b3480156105f257600080fd5b5061024061060136600461539e565b610eb9565b34801561061257600080fd5b506102406106213660046153d7565b610f01565b34801561063257600080fd5b5061064661064136600461541e565b611045565b60405161024a959493929190615530565b34801561066357600080fd5b5061021e610672366004615565565b61110d565b34801561068357600080fd5b5061021e6106923660046155c1565b61117d565b3480156106a357600080fd5b5061021e6111e3565b3480156106b857600080fd5b506102406106c73660046153d7565b611249565b3480156106d857600080fd5b5061021e6106e7366004615657565b611373565b3480156106f857600080fd5b5061070c610707366004615772565b611624565b60405161024a939291906157d4565b34801561072757600080fd5b506000546001600160a01b03166103b7565b34801561074557600080fd5b5061078c6107543660046151e6565b600960209081526000938452604080852082529284528284209052825290208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161024a565b3480156107b857600080fd5b5061021e6107c7366004615851565b6119f4565b61021e6107da3660046158fe565b611c76565b3480156107eb57600080fd5b5061021e6107fa3660046155c1565b611fb5565b34801561080b57600080fd5b50610240600b5481565b34801561082157600080fd5b5061021e610830366004614fc9565b612018565b34801561084157600080fd5b506005546103b7906001600160a01b031681565b34801561086157600080fd5b50610875610870366004615010565b61207d565b604080519283526001600160a01b0390911660208301520161024a565b34801561089e57600080fd5b5061021e6108ad3660046155c1565b61220c565b3480156108be57600080fd5b506108f16108cd366004615010565b60066020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161024a565b6010546000906109209061091a85856122eb565b906122fd565b9392505050565b805160609060008167ffffffffffffffff81111561094757610947615049565b604051908082528060200260200182016040528015610970578160200160208202803683370190505b5090506000825b600181106109ed578561098b600183615979565b8151811061099b5761099b615990565b60200260200101518383815181106109b5576109b5615990565b6001600160a01b0390921660209283029190910190910152816109d7816159a6565b92505080806109e5906159c0565b915050610977565b5090949350505050565b6000546001600160a01b03163314610a565760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610a61838383612309565b610aad5760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c000000000000000000006044820152606401610a4d565b505050565b610aba612340565b610ac78585858585612399565b610ad385858584612585565b814210610b225760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e0000006044820152606401610a4d565b610b2b60018055565b5050505050565b60008080848103610b5f57610b478787610f01565b9150610b5584836000610eb9565b9150819250610b7d565b610b698787611249565b9050610b7784826001610eb9565b90508092505b5050949350505050565b600080610bae60405180606001604052806000815260200160008152602001600081525090565b6000806000600a54600b5442610bc491906159d7565b610bce91906159ef565b6001600160a01b03808a1660008181526007602081815260408084208e87168086529083528185208251610180810184528154891681526001820154818601526002820154909816888401526003810154606089015260048101546080890152600581015460a0890152600681015460c08901529384015460e08801526008840154610100880152600980850154610120890152600a850154610140890152600b909401546101608801529484529181528183209383529283528082208583529092529081205492935090919003610cb3578060200151965080606001519550610cf1565b6001600160a01b038981166000908152600960209081526040808320938c168352928152828220858352905220600281015460039091015490975095505b6040805160608082018352600d548252600e546020830152600f549282019290925281519096508a908290600090610d2b57610d2b615990565b60200260200101906001600160a01b031690816001600160a01b0316815250508881600181518110610d5f57610d5f615990565b60200260200101906001600160a01b031690816001600160a01b0316815250506000610d8c8b8b846125f4565b9050896001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df09190615a11565b610dfb90600a615b18565b6040516370a0823160e01b815233600482015282906001600160a01b038d16906370a0823190602401602060405180830381865afa158015610e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e659190615b27565b610e6f9190615b40565b610e7991906159ef565b6001600160a01b039b8c1660009081526008602090815260408083209d8f1683529c90529a909a2060030154989b979a9699989096169695505050505050565b600060018215610ed757601054610ed090866127e7565b9050610ee7565b601054610ee490866127f3565b90505b601054610ef89061091a86846122eb565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f90610f519087908790600401615b5f565b600060405180830381865afa158015610f6e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f969190810190615b78565b905080610fae600183516127f390919063ffffffff16565b81518110610fbe57610fbe615990565b602002602001015191506000821161103e5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e203000000000000000000000000000000000006064820152608401610a4d565b5092915050565b6110bb60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000806000806000806110d08c8c8c8c6127ff565b929950909450925090506110e68c8c8b866129ee565b98506110f68c8c8b8b8686612a38565b989e919d509b509699509197509495505050505050565b6000546001600160a01b031633146111675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b8051600d556020810151600e5560400151600f55565b6000546001600160a01b031633146111d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b6111e081612cbc565b50565b6000546001600160a01b0316331461123d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b6112476000612d66565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca74906112999087908790600401615b5f565b600060405180830381865afa1580156112b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112de9190810190615b78565b9050806000815181106112f3576112f3615990565b602002602001015191506000821161103e5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e20300000000000000000000000000000000000006064820152608401610a4d565b6000546001600160a01b031633146113cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b6000826060015112156114225760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d203000000000000000006044820152606401610a4d565b6000826020015112156114775760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d2030000000000000006044820152606401610a4d565b836001600160a01b031681606001516001600160a01b031614806114b05750826001600160a01b031681606001516001600160a01b0316145b6114fc5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e67000000006044820152606401610a4d565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b1673ffffffffffffffffffffffffffffffffffffffff1991821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b61169a60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa158015611796573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ba9190615a11565b60ff1691506117d36117cd83600a615c09565b85610f01565b905060008082856080015111156118255761012085015160808601516010546117fc8683615979565b6118069190615b40565b61181091906159ef565b61181a91906159ef565b90506000915061186e565b846080015183111561186e5761012085015160808601516010546118498287615979565b6118539190615b40565b61185d91906159ef565b61186791906159ef565b9050600191505b60008113156119e95760808501839052610140850151610160860151836118a65761189882615c15565b91506118a381615c15565b90505b600082126118e95760208701516118bd8484615c4d565b6118c79190615d09565b6020880181905260c088015112156118e45760c087015160208801525b611945565b86602001518760a00151846118fd85612dc3565b6119079190615c4d565b6119119190615d09565b13156119265760a08701516020880152611945565b60208701516119358484615c4d565b61193f9190615d09565b60208801525b6000811261198a57606087015161195c8483615c4d565b6119669190615d09565b6060880181905261010088015112156119855761010087015160608801525b6119e6565b86606001518760e001518461199e84612dc3565b6119a89190615c4d565b6119b29190615d09565b13156119c75760e087015160608801526119e6565b60608701516119d68483615c4d565b6119e09190615d09565b60608801525b50505b505093509350939050565b6000546001600160a01b03163314611a4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b8251845114611a9f5760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d0000000000000000006044820152606401610a4d565b8151835114611af05760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d0000000000000000006044820152606401610a4d565b8051825114611b415760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d0000000000000000006044820152606401610a4d565b60005b8451811015610b2b57611ba3838281518110611b6257611b62615990565b6020026020010151858381518110611b7c57611b7c615990565b6020026020010151848481518110611b9657611b96615990565b6020026020010151612ddf565b7fd854fbf5db341a7d003a14ee8ed089e806c8731c6aca5fb4b89095d0a230ccd0858281518110611bd657611bd6615990565b6020026020010151858381518110611bf057611bf0615990565b6020026020010151858481518110611c0a57611c0a615990565b6020026020010151858581518110611c2457611c24615990565b6020026020010151604051611c5c94939291909384526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a180611c6e816159a6565b915050611b44565b611c7e612340565b333214611ccd5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c657200000000006044820152606401610a4d565b333b15611d415760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c73000000000000000000000000000000000000000000000000000000006064820152608401610a4d565b82600003611d6857611d538587610f01565b9350611d6181856000610eb9565b9350611d83565b611d728487611249565b9450611d8081866001610eb9565b94505b600086600081518110611d9857611d98615990565b6020026020010151905060008760018951611db39190615979565b81518110611dc357611dc3615990565b6020908102919091018101513360009081526006835260408082206001600160a01b0387168352909352918220600101805491935089929091611e079084906159d7565b90915550611e189050828289612f47565b60006040518060400160405280611e2e8561313b565b8152602001846001600160a01b0316815250905060006040518060400160405280611e588561313b565b81526001600160a01b0385166020909101528251909150600303611e8757611e828433308c613174565b611efc565b883414611efc5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f63757261746500000000000000000000000000000000000000000000000000006064820152608401610a4d565b611f0b82828b8b8e8c8c6132e4565b6000611f1885858b61358d565b9050600080611f2987878f8e613746565b91509150611f3887878f613a3c565b604080513381526001600160a01b038981166020830152881681830152606081018e90526080810185905260a0810184905260c0810183905290517f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49181900360e00190a150505050505050611fad60018055565b505050505050565b6000546001600160a01b0316331461200f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b6111e081613d0d565b6000546001600160a01b031633146120725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b600a91909155600b55565b6000806000600a54600b544261209391906159d7565b61209d91906159ef565b6001600160a01b0380871660008181526009602081815260408084208b871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b90910154610160820152815192935090911580156121ac5750600c54155b156121bd57806080015194506121d5565b81516000036121d057600c5494506121d5565b815194505b505050506001600160a01b039283166000908152600860209081526040808320948616835293905291909120600301549092911690565b6000546001600160a01b031633146122665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b6001600160a01b0381166122e25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a4d565b6111e081612d66565b60006109208284615b40565b92915050565b600061092082846159ef565b60006001600160a01b03841661232b576123238383613e5c565b506001610920565b612336848484612ddf565b5060019392505050565b6002600154036123925760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a4d565b6002600155565b6003816040516123a99190615da9565b9081526040519081900360200190205460ff16156124095760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a636572746966696361746520657870697265646044820152606401610a4d565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e8840152610104808401919091528351808403909101815261012490920190925280519101206000906124cd9083613f75565b6002549091506001600160a01b0380831691161461252d5760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c69642063657274696669636174656044820152606401610a4d565b600160038360405161253f9190615da9565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b0383166125a25761259d3383613e5c565b6125ad565b6125ad833384612ddf565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d3385858542866040516125e696959493929190615dc5565b60405180910390a150505050565b6001600160a01b0380841660008181526008602090815260408083208786168452825280832081516080810183528154871681526001820154938101939093526002810154918301919091526003015490931660608401819052909291839190036126de57846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bb9190615a11565b60ff1690506126d76126ce82600a615c09565b61062186610927565b92506127de565b81606001516001600160a01b0316856001600160a01b03160361277057856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d9190615a11565b60ff1690506126d76117cd82600a615c09565b60405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d61726b65743a3a496c6c6567616c2076616c756174696f6e206360448201527f757272656e6379000000000000000000000000000000000000000000000000006064820152608401610a4d565b50509392505050565b600061092082846159d7565b60006109208284615979565b61287560405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa158015612973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129979190615a11565b60ff1691506129b06129aa83600a615c09565b87610f01565b90506000806129bf8a8a610b87565b505050602088018290526060880181905290925090506129df8783610906565b94505050945094509450949050565b6001600160a01b038085166000908152600860209081526040808320938716835292905290812060020154610ef890612a28908590610906565b612a3285856127f3565b906127f3565b6001600160a01b038681166000908152600860209081526040808320898516808552908352818420825160808101845281548716815260018083015482870152600283015482860152600390920154871660608201529589168552600684528285209185529252822090810154905491928392839211612ac757612ac0888260200151610906565b9350612ca3565b6001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054612afe908a906159d7565b10612b53576001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054612ac09190612b3f908b906159d7565b612b499190615979565b8260200151610906565b6000612b6087600a615c09565b6040516370a0823160e01b81526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa158015612ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcd9190615b27565b612bd79190615b40565b612be191906159ef565b6001600160a01b038981166000908152600660209081526040808320938f1683529290522060018101549054919250908290612c1e908c906159d7565b612c2891906159d7565b1015612ca1576001600160a01b038089166000908152600660209081526040808320938e16835292905220548190612c61908b906159d7565b612c6b91906159d7565b6001600160a01b03808a166000908152600660209081526040808320938f1683529290522060010154612c9e9190615979565b93505b505b612cad88856127f3565b91505096509650969350505050565b6001600160a01b038116612d375760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610a4d565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080821215612ddb57612dd682615c15565b6122f7565b5090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691612e699190615da9565b6000604051808303816000865af19150503d8060008114612ea6576040519150601f19603f3d011682016040523d82523d6000602084013e612eab565b606091505b5091509150818015612ed5575080511580612ed5575080806020019051810190612ed59190615e28565b610b2b5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c6564000000000000000000000000000000000000006064820152608401610a4d565b6001600160a01b0380841660008181526008602090815260408083208786168452825291829020825160808101845281548616815260018201549281019290925260028101549282019290925260039091015490921660608301819052900361313557600080612fb78686610b87565b5093509350505083826000015111156130385760405162461bcd60e51b815260206004820152603860248201527f546f6b656e4d61726b65743a3a4c657373207468616e20746865207175616e7460448201527f697479206f6620612073696e676c6520707572636861736500000000000000006064820152608401610a4d565b83826020015110156130b25760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d61726b65743a3a47726561746572207468616e2074686520717560448201527f616e74697479206f6620612073696e676c6520707572636861736500000000006064820152608401610a4d565b6130bc84826159d7565b82604001511015611fad5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d61726b65743a3a457863656564696e6720706f736974696f6e2060448201527f6c696d69740000000000000000000000000000000000000000000000000000006064820152608401610a4d565b50505050565b600060036001600160a01b038316613155575060016122f7565b6004546001600160a01b03908116908416036122f75750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916132069190615da9565b6000604051808303816000865af19150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b50915091508180156132725750805115806132725750808060200190518101906132729190615e28565b611fad5760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c65640000000000000000000000000000006064820152608401610a4d565b865160030361330957602087015160055461330991906001600160a01b031687613f99565b8651600314801561331b575085516003145b8015613325575081155b156133c8576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed17399061337b9088908890889030908890600401615e45565b6000604051808303816000875af115801561339a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133c29190810190615b78565b50613584565b865160031480156133da575085516003145b80156133e65750816001145b1561343c576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee9061337b9087908990889030908890600401615e45565b865160031480156134595750855160021480613459575085516001145b80156134655750816001145b156134bb576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a9061337b9087908990889030908890600401615e45565b8651600214806134cc575086516001145b80156134d9575085516003145b80156134e55750816001145b15613584576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb4190879061353b908890889030908890600401615e81565b60006040518083038185885af1158015613559573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526135829190810190615b78565b505b50505050505050565b6001600160a01b038084166000908152600760208181526040808420878616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b9092015461016083015290816136448686610b87565b5050505090506136548482610906565b92506000604051806040016040528061366c8861313b565b81526001600160a01b038816602090910152805190915060030361371f5782516001600160a01b0316301461371a576136aa86846000015186612ddf565b82516001600160a01b031615806136cb575082516001600160a01b03166001145b1561371a57604080513381526001600160a01b03881660208201529081018590527fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b94539060600160405180910390a15b61373c565b82516001600160a01b0316301461373c57825161373c9085614101565b5050509392505050565b6001600160a01b03808516600090815260086020908152604080832087851684528252808320815160808101835281548616815260018201549381019390935260028101549183019190915260030154909216606083015290819081806137af898989896141e4565b3360009081526006602090815260408083206001600160a01b038f1684529091529020600181015490549399509194509250116137fb576137f4868460200151610906565b945061391d565b3360009081526006602090815260408083206001600160a01b038c1684529091529020600181015490546138309088906159d7565b10613883573360009081526006602090815260408083206001600160a01b038c1684529091529020600181015490546137f4919061386f9089906159d7565b6138799190615979565b8460200151610906565b600061389082600a615c09565b6040516370a0823160e01b815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa1580156138d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138fa9190615b27565b6139049190615b40565b61390e91906159ef565b905061391b8988836145c4565b505b61392786866127f3565b935084156139eb5761393e88846000015187612ddf565b848360200151601054876139529190615b40565b61395c91906159ef565b6139669190615979565b3360009081526006602090815260408083206001600160a01b038d1684529091528120600101805490919061399c9084906159d7565b9091555050604080513381526001600160a01b038a1660208201529081018690527f88dcaca629d63d86330e97adc358b13dd0ebd703239aea96b7ea2fb331b16f4e9060600160405180910390a15b6139f6883386612ddf565b3360009081526006602090815260408083206001600160a01b038c16845290915281208054869290613a299084906159d7565b9250508190555050505094509492505050565b6000600a54600b5442613a4f91906159d7565b613a5991906159ef565b6001600160a01b0380861660008181526009602081815260408084208a871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b9091015461016082015281519293509091158015613b685750600c54155b15613bc8576080810180516001600160a01b038089166000818152600960208181526040808420958d168085529582528084208b855282528084209690965595519382528552838120918152908452828120878252909352912055613c22565b8151600003613c2257600c546001600160a01b038088166000818152600960208181526040808420958c168085529582528084208a8552825280842087905594835290815283822092825291825282812087825290915220555b6000613c2f8787876125f4565b6001600160a01b038089166000908152600960209081526040808320938b16835292815282822088835290522054909150613c6d888884848961472d565b50506001600160a01b038881166000818152600960208181526040808420958d168085529582528084208b855282528084206001908101899055958452918152818320938352928352808220898352835290819020909201849055600c84905581518781529081018490527fb9362b96e28efbb7a7e63bb4a97faf9924ec0394635feff8588a6ae2a5f784fe910160405180910390a15050505050505050565b6001600160a01b038116613d895760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610a4d565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015613e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e2c9190615eb6565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b80471015613eac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a4d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613ef9576040519150601f19603f3d011682016040523d82523d6000602084013e613efe565b606091505b5050905080610aad5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610a4d565b6000806000613f8485856149ac565b91509150613f91816149f1565b509392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916140239190615da9565b6000604051808303816000865af19150503d8060008114614060576040519150601f19603f3d011682016040523d82523d6000602084013e614065565b606091505b509150915081801561408f57508051158061408f57508080602001905181019061408f9190615e28565b610b2b5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c65640000000000000000000000000000000000000000006064820152608401610a4d565b604080516000808252602082019092526001600160a01b03841690839060405161412b9190615da9565b60006040518083038185875af1925050503d8060008114614168576040519150601f19603f3d011682016040523d82523d6000602084013e61416d565b606091505b5050905080610aad5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c65640000000000000000000000006064820152608401610a4d565b6001600160a01b038085166000908152600760208181526040808420888616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b90920154610160830152908190819081806142a08a8a610b87565b505050915091506142b18782610906565b60408085015190516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156142fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061431f9190615b27565b10156143935760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e63650000000000000000000000000000000000006064820152608401610a4d565b600061439f8883610906565b1115614418576143bd8360400151336143b88a85610906565b612ddf565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd3384604001516143ee8a85610906565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a15b6001600160a01b03808b1660009081526008602090815260408083208d851684528252808320815160808101835281548616815260018201549381019390935260028101549183018290526003015490931660608201529161447b908a90610906565b111561450d5760006144a26144948a8460400151610906565b61449d8c610927565b614b56565b90507f340b543910b47fe717183f8972077c5d42343802898948d4dffc9cc82a4f6099338c6144d58c8660400151610906565b604080516001600160a01b0394851681529284166020840152820152908e1660608201526080810183905260a00160405180910390a1505b8a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561454b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061456f9190615a11565b60ff16945061458861458286600a615c09565b8a610f01565b955060006145968985610906565b90506145b36145a98a8460400151610906565b612a328b846127f3565b975050505050509450945094915050565b3360009081526006602090815260408083206001600160a01b038716845290915290206001810154905482906145fb9085906159d7565b61460591906159d7565b1015610aad573360009081526006602090815260408083206001600160a01b0387168452909152812054829061463c9085906159d7565b61464691906159d7565b3360009081526006602090815260408083206001600160a01b03891684529091529020600101546146779190615979565b905080156146b8573360009081526006602090815260408083206001600160a01b0388168452909152812080548392906146b29084906159d7565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a0016125e6565b6001600160a01b038086166000908152600760208181526040808420898616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e0820152600883015461010082015260098301546101208201819052600a840154610140830152600b90930154610160820152909182919061482b5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e20300000006044820152606401610a4d565b6000851161487b5760405162461bcd60e51b815260206004820152601560248201527f546f6b656e4d61726b65743a3a6f70656e203e203000000000000000000000006044820152606401610a4d565b858511156148c15761012081015160105486906148988983615979565b6148a29190615b40565b6148ac91906159ef565b6148b691906159ef565b925060009150614903565b848611156149035761012081015160105486906148de828a615979565b6148e89190615b40565b6148f291906159ef565b6148fc91906159ef565b9250600191505b6000806149128a8a8787614c46565b6001600160a01b038c81166000908152600960209081526040808320938f1683529281528282208b835290522060028101839055600301819055909250905061495d898b8787614c46565b6001600160a01b039a8b1660009081526009602090815260408083209e909d1682529c8d528b812098815297909b52989095206002810198909855505060039095019590955550929391925050565b60008082516041036149e25760208301516040840151606085015160001a6149d687828585614f08565b945094505050506149ea565b506000905060025b9250929050565b6000816004811115614a0557614a05615ed3565b03614a0d5750565b6001816004811115614a2157614a21615ed3565b03614a6e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a4d565b6002816004811115614a8257614a82615ed3565b03614acf5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a4d565b6003816004811115614ae357614ae3615ed3565b036111e05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a4d565b60008082600081518110614b6c57614b6c615990565b6020026020010151905060008360018551614b879190615979565b81518110614b9757614b97615990565b6020026020010151905060006040518060400160405280614bb78561313b565b8152602001846001600160a01b0316815250905060006040518060400160405280614be18561313b565b8152602001846001600160a01b03168152509050614bff8787610f01565b9450614c0f612710866000610eb9565b94506000614c1e42600a6159d7565b9050614c3083838a898b6000876132e4565b614c3b843388612ddf565b505050505092915050565b6000806000841315614ecc576001600160a01b038681166000908152600760209081526040808320938916835292905220600a810154600b9091015484614c9e57614c9082615c15565b9150614c9b81615c15565b90505b6000614ca983612dc3565b1315614d5457614cb98683615c4d565b935060008212614d24576001600160a01b038089166000908152600760209081526040808320938b1683529290522060060154841315614d1f576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015493505b614d80565b6001600160a01b038089166000908152600760209081526040808320938b16835292905220600101549350614d80565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493505b6000614d8b82612dc3565b1315614e99576001600160a01b038089166000908152600760209081526040808320938b1683529290522060030154614dc48783615c4d565b614dce9190615d09565b925060008112614e39576001600160a01b038089166000908152600760209081526040808320938b1683529290522060080154831315614e34576001600160a01b038089166000908152600760209081526040808320938b168352929052206008015492505b614ec5565b6001600160a01b038089166000908152600760208181526040808420948c1684529390529190200154831215614e34576001600160a01b038089166000908152600760208181526040808420948c16845293905291902001549250614ec5565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015492505b5050614eff565b50506001600160a01b03848116600090815260076020908152604080832093871683529290522060018101546003909101545b94509492505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614f3f5750600090506003614eff565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614f93573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614fbc57600060019250925050614eff565b9660009650945050505050565b60008060408385031215614fdc57600080fd5b50508035926020909101359150565b6001600160a01b03811681146111e057600080fd5b803561500b81614feb565b919050565b6000806040838503121561502357600080fd5b823561502e81614feb565b9150602083013561503e81614feb565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171561508357615083615049565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156150b2576150b2615049565b604052919050565b600067ffffffffffffffff8211156150d4576150d4615049565b5060051b60200190565b600082601f8301126150ef57600080fd5b813560206151046150ff836150ba565b615089565b82815260059290921b8401810191818101908684111561512357600080fd5b8286015b8481101561514757803561513a81614feb565b8352918301918301615127565b509695505050505050565b60006020828403121561516457600080fd5b813567ffffffffffffffff81111561517b57600080fd5b615187848285016150de565b949350505050565b600081518084526020808501945080840160005b838110156151c85781516001600160a01b0316875295820195908201906001016151a3565b509495945050505050565b602081526000610920602083018461518f565b6000806000606084860312156151fb57600080fd5b833561520681614feb565b9250602084013561521681614feb565b929592945050506040919091013590565b600082601f83011261523857600080fd5b813567ffffffffffffffff81111561525257615252615049565b6152656020601f19601f84011601615089565b81815284602083860101111561527a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156152af57600080fd5b8535945060208601356152c181614feb565b93506040860135925060608601359150608086013567ffffffffffffffff8111156152eb57600080fd5b6152f788828901615227565b9150509295509295909350565b6000806000806080858703121561531a57600080fd5b84359350602085013567ffffffffffffffff81111561533857600080fd5b615344878288016150de565b949794965050505060408301359260600135919050565b60006020828403121561536d57600080fd5b813567ffffffffffffffff81111561538457600080fd5b61518784828501615227565b80151581146111e057600080fd5b6000806000606084860312156153b357600080fd5b833592506020840135915060408401356153cc81615390565b809150509250925092565b600080604083850312156153ea57600080fd5b82359150602083013567ffffffffffffffff81111561540857600080fd5b615414858286016150de565b9150509250929050565b600080600080600060a0868803121561543657600080fd5b853561544181614feb565b9450602086013561545181614feb565b9350604086013567ffffffffffffffff81111561546d57600080fd5b615479888289016150de565b93505060608601359150608086013561549181614feb565b809150509295509295909350565b80516001600160a01b031682526020810151602083015260408101516154d060408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b610200810161553f828861549f565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b60006060828403121561557757600080fd5b6040516060810181811067ffffffffffffffff8211171561559a5761559a615049565b80604052508235815260208301356020820152604083013560408201528091505092915050565b6000602082840312156155d357600080fd5b813561092081614feb565b6000608082840312156155f057600080fd5b6040516080810181811067ffffffffffffffff8211171561561357615613615049565b604052905080823561562481614feb565b808252506020830135602082015260408301356040820152606083013561564a81614feb565b6060919091015292915050565b60008060008084860361024081121561566f57600080fd5b853561567a81614feb565b9450602086013561568a81614feb565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082018113156156be57600080fd5b6156c661505f565b91506156d460408801615000565b8252606087013560208301526156ec60808801615000565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050615767866101c087016155de565b905092959194509250565b60008060006060848603121561578757600080fd5b833561579281614feb565b925060208401356157a281614feb565b9150604084013567ffffffffffffffff8111156157be57600080fd5b6157ca868287016150de565b9150509250925092565b6101c081016157e3828661549f565b6101808201939093526101a00152919050565b600082601f83011261580757600080fd5b813560206158176150ff836150ba565b82815260059290921b8401810191818101908684111561583657600080fd5b8286015b84811015615147578035835291830191830161583a565b6000806000806080858703121561586757600080fd5b843567ffffffffffffffff8082111561587f57600080fd5b61588b888389016157f6565b955060208701359150808211156158a157600080fd5b6158ad888389016150de565b945060408701359150808211156158c357600080fd5b6158cf888389016150de565b935060608701359150808211156158e557600080fd5b506158f2878288016157f6565b91505092959194509250565b60008060008060008060c0878903121561591757600080fd5b863567ffffffffffffffff81111561592e57600080fd5b61593a89828a016150de565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b634e487b7160e01b600052601160045260246000fd5b60008282101561598b5761598b615963565b500390565b634e487b7160e01b600052603260045260246000fd5b600060001982036159b9576159b9615963565b5060010190565b6000816159cf576159cf615963565b506000190190565b600082198211156159ea576159ea615963565b500190565b600082615a0c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215615a2357600080fd5b815160ff8116811461092057600080fd5b600181815b80851115615a6f578160001904821115615a5557615a55615963565b80851615615a6257918102915b93841c9390800290615a39565b509250929050565b600082615a86575060016122f7565b81615a93575060006122f7565b8160018114615aa95760028114615ab357615acf565b60019150506122f7565b60ff841115615ac457615ac4615963565b50506001821b6122f7565b5060208310610133831016604e8410600b8410161715615af2575081810a6122f7565b615afc8383615a34565b8060001904821115615b1057615b10615963565b029392505050565b600061092060ff841683615a77565b600060208284031215615b3957600080fd5b5051919050565b6000816000190483118215151615615b5a57615b5a615963565b500290565b828152604060208201526000615187604083018461518f565b60006020808385031215615b8b57600080fd5b825167ffffffffffffffff811115615ba257600080fd5b8301601f81018513615bb357600080fd5b8051615bc16150ff826150ba565b81815260059190911b82018301908381019087831115615be057600080fd5b928401925b82841015615bfe57835182529284019290840190615be5565b979650505050505050565b60006109208383615a77565b60007f80000000000000000000000000000000000000000000000000000000000000008203615c4657615c46615963565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615615c8e57615c8e615963565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615615cc957615cc9615963565b60008712925087820587128484161615615ce557615ce5615963565b87850587128184161615615cfb57615cfb615963565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615615d4357615d43615963565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615615d7757615d77615963565b50500190565b60005b83811015615d98578181015183820152602001615d80565b838111156131355750506000910152565b60008251615dbb818460208701615d7d565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c0840152615e0f8160e0850160208701615d7d565b601f01601f19169190910160e001979650505050505050565b600060208284031215615e3a57600080fd5b815161092081615390565b85815284602082015260a060408201526000615e6460a083018661518f565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000615e9a608083018661518f565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215615ec857600080fd5b815161092081614feb565b634e487b7160e01b600052602160045260246000fdfea26469706673582212204915d80c684f01c667bf9fd0f5d078111bd5c203abe604f476f79e45740c82dd64736f6c634300080e0033",
1473
+ "deployedBytecode": "0x6080604052600436106102175760003560e01c806362a76603116101265780639bad44e8116100a7578063d738eba111610079578063eed8386c11610061578063eed8386c14610855578063f2fde38b14610892578063fe8691b4146108b257005b8063d738eba114610815578063d96661ef1461083557005b80639bad44e8146107ac578063a6a3694a146107cc578063aa5d448f146107df578063b1801986146107ff57005b8063744cfdd9116100f857806381f3fdc3116100e057806381f3fdc3146106ec5780638da5cb5b1461071b5780639065a9af1461073957005b8063744cfdd9146106ac5780637aaa9b02146106cc57005b806362a766031461062657806364394115146106575780636f151a3814610677578063715018a61461069757005b806327af9e38116101b05780633fc8cef31161018257806343d726d61161016a57806343d726d6146105d05780635c818121146105e65780635ff530f21461060657005b80633fc8cef31461054957806340216a831461056957005b806327af9e38146103cf5780632926e5de146103e55780632bd2c18d146104de57806334e3f92d146104fe57005b80630fcc40c4116101e95780630fcc40c41461032a5780631b153401146103575780631f8c24de14610377578063238ac9331461039757005b8063016eb8a814610220578063089afeae14610253578063092e469f146102da5780630d83b1e41461031457005b3661021e57005b005b34801561022c57600080fd5b5061024061023b366004614fc9565b610906565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b506102ab61026e366004615010565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391921684565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800161024a565b3480156102e657600080fd5b50600d54600e54600f546102f992919083565b6040805193845260208401929092529082015260600161024a565b34801561032057600080fd5b5061024060105481565b34801561033657600080fd5b5061034a610345366004615152565b610927565b60405161024a91906151d3565b34801561036357600080fd5b5061021e6103723660046151e6565b6109f7565b34801561038357600080fd5b5061021e610392366004615297565b610ab2565b3480156103a357600080fd5b506002546103b7906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b3480156103db57600080fd5b50610240600a5481565b3480156103f157600080fd5b50610474610400366004615010565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e08501526101008401526101208301526101408201526101608101919091526101800161024a565b3480156104ea57600080fd5b506102406104f9366004615304565b610b32565b34801561050a57600080fd5b5061053961051936600461535b565b805160208183018101805160038252928201919093012091525460ff1681565b604051901515815260200161024a565b34801561055557600080fd5b506004546103b7906001600160a01b031681565b34801561057557600080fd5b50610589610584366004615010565b610b87565b604080519586526020808701959095528351868201529383015160608601529190920151608084015260a08301919091526001600160a01b031660c082015260e00161024a565b3480156105dc57600080fd5b50610240600c5481565b3480156105f257600080fd5b5061024061060136600461539e565b610eb9565b34801561061257600080fd5b506102406106213660046153d7565b610f01565b34801561063257600080fd5b5061064661064136600461541e565b611045565b60405161024a959493929190615530565b34801561066357600080fd5b5061021e610672366004615565565b61110d565b34801561068357600080fd5b5061021e6106923660046155c1565b61117d565b3480156106a357600080fd5b5061021e6111e3565b3480156106b857600080fd5b506102406106c73660046153d7565b611249565b3480156106d857600080fd5b5061021e6106e7366004615657565b611373565b3480156106f857600080fd5b5061070c610707366004615772565b611624565b60405161024a939291906157d4565b34801561072757600080fd5b506000546001600160a01b03166103b7565b34801561074557600080fd5b5061078c6107543660046151e6565b600960209081526000938452604080852082529284528284209052825290208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161024a565b3480156107b857600080fd5b5061021e6107c7366004615851565b6119f4565b61021e6107da3660046158fe565b611c76565b3480156107eb57600080fd5b5061021e6107fa3660046155c1565b611fb5565b34801561080b57600080fd5b50610240600b5481565b34801561082157600080fd5b5061021e610830366004614fc9565b612018565b34801561084157600080fd5b506005546103b7906001600160a01b031681565b34801561086157600080fd5b50610875610870366004615010565b61207d565b604080519283526001600160a01b0390911660208301520161024a565b34801561089e57600080fd5b5061021e6108ad3660046155c1565b61220c565b3480156108be57600080fd5b506108f16108cd366004615010565b60066020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161024a565b6010546000906109209061091a85856122eb565b906122fd565b9392505050565b805160609060008167ffffffffffffffff81111561094757610947615049565b604051908082528060200260200182016040528015610970578160200160208202803683370190505b5090506000825b600181106109ed578561098b600183615979565b8151811061099b5761099b615990565b60200260200101518383815181106109b5576109b5615990565b6001600160a01b0390921660209283029190910190910152816109d7816159a6565b92505080806109e5906159c0565b915050610977565b5090949350505050565b6000546001600160a01b03163314610a565760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610a61838383612309565b610aad5760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c000000000000000000006044820152606401610a4d565b505050565b610aba612340565b610ac78585858585612399565b610ad385858584612585565b814210610b225760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e0000006044820152606401610a4d565b610b2b60018055565b5050505050565b60008080848103610b5f57610b478787610f01565b9150610b5584836000610eb9565b9150819250610b7d565b610b698787611249565b9050610b7784826001610eb9565b90508092505b5050949350505050565b600080610bae60405180606001604052806000815260200160008152602001600081525090565b6000806000600a54600b5442610bc491906159d7565b610bce91906159ef565b6001600160a01b03808a1660008181526007602081815260408084208e87168086529083528185208251610180810184528154891681526001820154818601526002820154909816888401526003810154606089015260048101546080890152600581015460a0890152600681015460c08901529384015460e08801526008840154610100880152600980850154610120890152600a850154610140890152600b909401546101608801529484529181528183209383529283528082208583529092529081205492935090919003610cb3578060200151965080606001519550610cf1565b6001600160a01b038981166000908152600960209081526040808320938c168352928152828220858352905220600281015460039091015490975095505b6040805160608082018352600d548252600e546020830152600f549282019290925281519096508a908290600090610d2b57610d2b615990565b60200260200101906001600160a01b031690816001600160a01b0316815250508881600181518110610d5f57610d5f615990565b60200260200101906001600160a01b031690816001600160a01b0316815250506000610d8c8b8b846125f4565b9050896001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df09190615a11565b610dfb90600a615b18565b6040516370a0823160e01b815233600482015282906001600160a01b038d16906370a0823190602401602060405180830381865afa158015610e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e659190615b27565b610e6f9190615b40565b610e7991906159ef565b6001600160a01b039b8c1660009081526008602090815260408083209d8f1683529c90529a909a2060030154989b979a9699989096169695505050505050565b600060018215610ed757601054610ed090866127e7565b9050610ee7565b601054610ee490866127f3565b90505b601054610ef89061091a86846122eb565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f90610f519087908790600401615b5f565b600060405180830381865afa158015610f6e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f969190810190615b78565b905080610fae600183516127f390919063ffffffff16565b81518110610fbe57610fbe615990565b602002602001015191506000821161103e5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e203000000000000000000000000000000000006064820152608401610a4d565b5092915050565b6110bb60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000806000806000806110d08c8c8c8c6127ff565b929950909450925090506110e68c8c8b866129ee565b98506110f68c8c8b8b8686612a38565b989e919d509b509699509197509495505050505050565b6000546001600160a01b031633146111675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b8051600d556020810151600e5560400151600f55565b6000546001600160a01b031633146111d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b6111e081612cbc565b50565b6000546001600160a01b0316331461123d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b6112476000612d66565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca74906112999087908790600401615b5f565b600060405180830381865afa1580156112b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112de9190810190615b78565b9050806000815181106112f3576112f3615990565b602002602001015191506000821161103e5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e20300000000000000000000000000000000000006064820152608401610a4d565b6000546001600160a01b031633146113cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b6000826060015112156114225760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d203000000000000000006044820152606401610a4d565b6000826020015112156114775760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d2030000000000000006044820152606401610a4d565b836001600160a01b031681606001516001600160a01b031614806114b05750826001600160a01b031681606001516001600160a01b0316145b6114fc5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e67000000006044820152606401610a4d565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b1673ffffffffffffffffffffffffffffffffffffffff1991821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b61169a60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa158015611796573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ba9190615a11565b60ff1691506117d36117cd83600a615c09565b85610f01565b905060008082856080015111156118255761012085015160808601516010546117fc8683615979565b6118069190615b40565b61181091906159ef565b61181a91906159ef565b90506000915061186e565b846080015183111561186e5761012085015160808601516010546118498287615979565b6118539190615b40565b61185d91906159ef565b61186791906159ef565b9050600191505b60008113156119e95760808501839052610140850151610160860151836118a65761189882615c15565b91506118a381615c15565b90505b600082126118e95760208701516118bd8484615c4d565b6118c79190615d09565b6020880181905260c088015112156118e45760c087015160208801525b611945565b86602001518760a00151846118fd85612dc3565b6119079190615c4d565b6119119190615d09565b13156119265760a08701516020880152611945565b60208701516119358484615c4d565b61193f9190615d09565b60208801525b6000811261198a57606087015161195c8483615c4d565b6119669190615d09565b6060880181905261010088015112156119855761010087015160608801525b6119e6565b86606001518760e001518461199e84612dc3565b6119a89190615c4d565b6119b29190615d09565b13156119c75760e087015160608801526119e6565b60608701516119d68483615c4d565b6119e09190615d09565b60608801525b50505b505093509350939050565b6000546001600160a01b03163314611a4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b8251845114611a9f5760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d0000000000000000006044820152606401610a4d565b8151835114611af05760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d0000000000000000006044820152606401610a4d565b8051825114611b415760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d0000000000000000006044820152606401610a4d565b60005b8451811015610b2b57611ba3838281518110611b6257611b62615990565b6020026020010151858381518110611b7c57611b7c615990565b6020026020010151848481518110611b9657611b96615990565b6020026020010151612ddf565b7fd854fbf5db341a7d003a14ee8ed089e806c8731c6aca5fb4b89095d0a230ccd0858281518110611bd657611bd6615990565b6020026020010151858381518110611bf057611bf0615990565b6020026020010151858481518110611c0a57611c0a615990565b6020026020010151858581518110611c2457611c24615990565b6020026020010151604051611c5c94939291909384526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a180611c6e816159a6565b915050611b44565b611c7e612340565b333214611ccd5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c657200000000006044820152606401610a4d565b333b15611d415760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c73000000000000000000000000000000000000000000000000000000006064820152608401610a4d565b82600003611d6857611d538587610f01565b9350611d6181856000610eb9565b9350611d83565b611d728487611249565b9450611d8081866001610eb9565b94505b600086600081518110611d9857611d98615990565b6020026020010151905060008760018951611db39190615979565b81518110611dc357611dc3615990565b6020908102919091018101513360009081526006835260408082206001600160a01b0387168352909352918220600101805491935089929091611e079084906159d7565b90915550611e189050828289612f47565b60006040518060400160405280611e2e8561313b565b8152602001846001600160a01b0316815250905060006040518060400160405280611e588561313b565b81526001600160a01b0385166020909101528251909150600303611e8757611e828433308c613174565b611efc565b883414611efc5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f63757261746500000000000000000000000000000000000000000000000000006064820152608401610a4d565b611f0b82828b8b8e8c8c6132e4565b6000611f1885858b61358d565b9050600080611f2987878f8e613746565b91509150611f3887878f613a3c565b604080513381526001600160a01b038981166020830152881681830152606081018e90526080810185905260a0810184905260c0810183905290517f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49181900360e00190a150505050505050611fad60018055565b505050505050565b6000546001600160a01b0316331461200f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b6111e081613d0d565b6000546001600160a01b031633146120725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b600a91909155600b55565b6000806000600a54600b544261209391906159d7565b61209d91906159ef565b6001600160a01b0380871660008181526009602081815260408084208b871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b90910154610160820152815192935090911580156121ac5750600c54155b156121bd57806080015194506121d5565b81516000036121d057600c5494506121d5565b815194505b505050506001600160a01b039283166000908152600860209081526040808320948616835293905291909120600301549092911690565b6000546001600160a01b031633146122665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4d565b6001600160a01b0381166122e25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a4d565b6111e081612d66565b60006109208284615b40565b92915050565b600061092082846159ef565b60006001600160a01b03841661232b576123238383613e5c565b506001610920565b612336848484612ddf565b5060019392505050565b6002600154036123925760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a4d565b6002600155565b6003816040516123a99190615da9565b9081526040519081900360200190205460ff16156124095760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a636572746966696361746520657870697265646044820152606401610a4d565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e8840152610104808401919091528351808403909101815261012490920190925280519101206000906124cd9083613f75565b6002549091506001600160a01b0380831691161461252d5760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c69642063657274696669636174656044820152606401610a4d565b600160038360405161253f9190615da9565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b0383166125a25761259d3383613e5c565b6125ad565b6125ad833384612ddf565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d3385858542866040516125e696959493929190615dc5565b60405180910390a150505050565b6001600160a01b0380841660008181526008602090815260408083208786168452825280832081516080810183528154871681526001820154938101939093526002810154918301919091526003015490931660608401819052909291839190036126de57846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bb9190615a11565b60ff1690506126d76126ce82600a615c09565b61062186610927565b92506127de565b81606001516001600160a01b0316856001600160a01b03160361277057856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d9190615a11565b60ff1690506126d76117cd82600a615c09565b60405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d61726b65743a3a496c6c6567616c2076616c756174696f6e206360448201527f757272656e6379000000000000000000000000000000000000000000000000006064820152608401610a4d565b50509392505050565b600061092082846159d7565b60006109208284615979565b61287560405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa158015612973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129979190615a11565b60ff1691506129b06129aa83600a615c09565b87610f01565b90506000806129bf8a8a610b87565b505050602088018290526060880181905290925090506129df8783610906565b94505050945094509450949050565b6001600160a01b038085166000908152600860209081526040808320938716835292905290812060020154610ef890612a28908590610906565b612a3285856127f3565b906127f3565b6001600160a01b038681166000908152600860209081526040808320898516808552908352818420825160808101845281548716815260018083015482870152600283015482860152600390920154871660608201529589168552600684528285209185529252822090810154905491928392839211612ac757612ac0888260200151610906565b9350612ca3565b6001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054612afe908a906159d7565b10612b53576001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054612ac09190612b3f908b906159d7565b612b499190615979565b8260200151610906565b6000612b6087600a615c09565b6040516370a0823160e01b81526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa158015612ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcd9190615b27565b612bd79190615b40565b612be191906159ef565b6001600160a01b038981166000908152600660209081526040808320938f1683529290522060018101549054919250908290612c1e908c906159d7565b612c2891906159d7565b1015612ca1576001600160a01b038089166000908152600660209081526040808320938e16835292905220548190612c61908b906159d7565b612c6b91906159d7565b6001600160a01b03808a166000908152600660209081526040808320938f1683529290522060010154612c9e9190615979565b93505b505b612cad88856127f3565b91505096509650969350505050565b6001600160a01b038116612d375760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610a4d565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080821215612ddb57612dd682615c15565b6122f7565b5090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691612e699190615da9565b6000604051808303816000865af19150503d8060008114612ea6576040519150601f19603f3d011682016040523d82523d6000602084013e612eab565b606091505b5091509150818015612ed5575080511580612ed5575080806020019051810190612ed59190615e28565b610b2b5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c6564000000000000000000000000000000000000006064820152608401610a4d565b6001600160a01b0380841660008181526008602090815260408083208786168452825291829020825160808101845281548616815260018201549281019290925260028101549282019290925260039091015490921660608301819052900361313557600080612fb78686610b87565b5093509350505083826000015111156130385760405162461bcd60e51b815260206004820152603860248201527f546f6b656e4d61726b65743a3a4c657373207468616e20746865207175616e7460448201527f697479206f6620612073696e676c6520707572636861736500000000000000006064820152608401610a4d565b83826020015110156130b25760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d61726b65743a3a47726561746572207468616e2074686520717560448201527f616e74697479206f6620612073696e676c6520707572636861736500000000006064820152608401610a4d565b6130bc84826159d7565b82604001511015611fad5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d61726b65743a3a457863656564696e6720706f736974696f6e2060448201527f6c696d69740000000000000000000000000000000000000000000000000000006064820152608401610a4d565b50505050565b600060036001600160a01b038316613155575060016122f7565b6004546001600160a01b03908116908416036122f75750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916132069190615da9565b6000604051808303816000865af19150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b50915091508180156132725750805115806132725750808060200190518101906132729190615e28565b611fad5760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c65640000000000000000000000000000006064820152608401610a4d565b865160030361330957602087015160055461330991906001600160a01b031687613f99565b8651600314801561331b575085516003145b8015613325575081155b156133c8576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed17399061337b9088908890889030908890600401615e45565b6000604051808303816000875af115801561339a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133c29190810190615b78565b50613584565b865160031480156133da575085516003145b80156133e65750816001145b1561343c576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee9061337b9087908990889030908890600401615e45565b865160031480156134595750855160021480613459575085516001145b80156134655750816001145b156134bb576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a9061337b9087908990889030908890600401615e45565b8651600214806134cc575086516001145b80156134d9575085516003145b80156134e55750816001145b15613584576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb4190879061353b908890889030908890600401615e81565b60006040518083038185885af1158015613559573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526135829190810190615b78565b505b50505050505050565b6001600160a01b038084166000908152600760208181526040808420878616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b9092015461016083015290816136448686610b87565b5050505090506136548482610906565b92506000604051806040016040528061366c8861313b565b81526001600160a01b038816602090910152805190915060030361371f5782516001600160a01b0316301461371a576136aa86846000015186612ddf565b82516001600160a01b031615806136cb575082516001600160a01b03166001145b1561371a57604080513381526001600160a01b03881660208201529081018590527fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b94539060600160405180910390a15b61373c565b82516001600160a01b0316301461373c57825161373c9085614101565b5050509392505050565b6001600160a01b03808516600090815260086020908152604080832087851684528252808320815160808101835281548616815260018201549381019390935260028101549183019190915260030154909216606083015290819081806137af898989896141e4565b3360009081526006602090815260408083206001600160a01b038f1684529091529020600181015490549399509194509250116137fb576137f4868460200151610906565b945061391d565b3360009081526006602090815260408083206001600160a01b038c1684529091529020600181015490546138309088906159d7565b10613883573360009081526006602090815260408083206001600160a01b038c1684529091529020600181015490546137f4919061386f9089906159d7565b6138799190615979565b8460200151610906565b600061389082600a615c09565b6040516370a0823160e01b815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa1580156138d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138fa9190615b27565b6139049190615b40565b61390e91906159ef565b905061391b8988836145c4565b505b61392786866127f3565b935084156139eb5761393e88846000015187612ddf565b848360200151601054876139529190615b40565b61395c91906159ef565b6139669190615979565b3360009081526006602090815260408083206001600160a01b038d1684529091528120600101805490919061399c9084906159d7565b9091555050604080513381526001600160a01b038a1660208201529081018690527f88dcaca629d63d86330e97adc358b13dd0ebd703239aea96b7ea2fb331b16f4e9060600160405180910390a15b6139f6883386612ddf565b3360009081526006602090815260408083206001600160a01b038c16845290915281208054869290613a299084906159d7565b9250508190555050505094509492505050565b6000600a54600b5442613a4f91906159d7565b613a5991906159ef565b6001600160a01b0380861660008181526009602081815260408084208a871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b9091015461016082015281519293509091158015613b685750600c54155b15613bc8576080810180516001600160a01b038089166000818152600960208181526040808420958d168085529582528084208b855282528084209690965595519382528552838120918152908452828120878252909352912055613c22565b8151600003613c2257600c546001600160a01b038088166000818152600960208181526040808420958c168085529582528084208a8552825280842087905594835290815283822092825291825282812087825290915220555b6000613c2f8787876125f4565b6001600160a01b038089166000908152600960209081526040808320938b16835292815282822088835290522054909150613c6d888884848961472d565b50506001600160a01b038881166000818152600960208181526040808420958d168085529582528084208b855282528084206001908101899055958452918152818320938352928352808220898352835290819020909201849055600c84905581518781529081018490527fb9362b96e28efbb7a7e63bb4a97faf9924ec0394635feff8588a6ae2a5f784fe910160405180910390a15050505050505050565b6001600160a01b038116613d895760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610a4d565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015613e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e2c9190615eb6565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b80471015613eac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a4d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613ef9576040519150601f19603f3d011682016040523d82523d6000602084013e613efe565b606091505b5050905080610aad5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610a4d565b6000806000613f8485856149ac565b91509150613f91816149f1565b509392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916140239190615da9565b6000604051808303816000865af19150503d8060008114614060576040519150601f19603f3d011682016040523d82523d6000602084013e614065565b606091505b509150915081801561408f57508051158061408f57508080602001905181019061408f9190615e28565b610b2b5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c65640000000000000000000000000000000000000000006064820152608401610a4d565b604080516000808252602082019092526001600160a01b03841690839060405161412b9190615da9565b60006040518083038185875af1925050503d8060008114614168576040519150601f19603f3d011682016040523d82523d6000602084013e61416d565b606091505b5050905080610aad5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c65640000000000000000000000006064820152608401610a4d565b6001600160a01b038085166000908152600760208181526040808420888616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b90920154610160830152908190819081806142a08a8a610b87565b505050915091506142b18782610906565b60408085015190516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156142fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061431f9190615b27565b10156143935760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e63650000000000000000000000000000000000006064820152608401610a4d565b600061439f8883610906565b1115614418576143bd8360400151336143b88a85610906565b612ddf565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd3384604001516143ee8a85610906565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a15b6001600160a01b03808b1660009081526008602090815260408083208d851684528252808320815160808101835281548616815260018201549381019390935260028101549183018290526003015490931660608201529161447b908a90610906565b111561450d5760006144a26144948a8460400151610906565b61449d8c610927565b614b56565b90507f340b543910b47fe717183f8972077c5d42343802898948d4dffc9cc82a4f6099338c6144d58c8660400151610906565b604080516001600160a01b0394851681529284166020840152820152908e1660608201526080810183905260a00160405180910390a1505b8a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561454b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061456f9190615a11565b60ff16945061458861458286600a615c09565b8a610f01565b955060006145968985610906565b90506145b36145a98a8460400151610906565b612a328b846127f3565b975050505050509450945094915050565b3360009081526006602090815260408083206001600160a01b038716845290915290206001810154905482906145fb9085906159d7565b61460591906159d7565b1015610aad573360009081526006602090815260408083206001600160a01b0387168452909152812054829061463c9085906159d7565b61464691906159d7565b3360009081526006602090815260408083206001600160a01b03891684529091529020600101546146779190615979565b905080156146b8573360009081526006602090815260408083206001600160a01b0388168452909152812080548392906146b29084906159d7565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a0016125e6565b6001600160a01b038086166000908152600760208181526040808420898616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e0820152600883015461010082015260098301546101208201819052600a840154610140830152600b90930154610160820152909182919061482b5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e20300000006044820152606401610a4d565b6000851161487b5760405162461bcd60e51b815260206004820152601560248201527f546f6b656e4d61726b65743a3a6f70656e203e203000000000000000000000006044820152606401610a4d565b858511156148c15761012081015160105486906148988983615979565b6148a29190615b40565b6148ac91906159ef565b6148b691906159ef565b925060009150614903565b848611156149035761012081015160105486906148de828a615979565b6148e89190615b40565b6148f291906159ef565b6148fc91906159ef565b9250600191505b6000806149128a8a8787614c46565b6001600160a01b038c81166000908152600960209081526040808320938f1683529281528282208b835290522060028101839055600301819055909250905061495d898b8787614c46565b6001600160a01b039a8b1660009081526009602090815260408083209e909d1682529c8d528b812098815297909b52989095206002810198909855505060039095019590955550929391925050565b60008082516041036149e25760208301516040840151606085015160001a6149d687828585614f08565b945094505050506149ea565b506000905060025b9250929050565b6000816004811115614a0557614a05615ed3565b03614a0d5750565b6001816004811115614a2157614a21615ed3565b03614a6e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a4d565b6002816004811115614a8257614a82615ed3565b03614acf5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a4d565b6003816004811115614ae357614ae3615ed3565b036111e05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a4d565b60008082600081518110614b6c57614b6c615990565b6020026020010151905060008360018551614b879190615979565b81518110614b9757614b97615990565b6020026020010151905060006040518060400160405280614bb78561313b565b8152602001846001600160a01b0316815250905060006040518060400160405280614be18561313b565b8152602001846001600160a01b03168152509050614bff8787610f01565b9450614c0f612710866000610eb9565b94506000614c1e42600a6159d7565b9050614c3083838a898b6000876132e4565b614c3b843388612ddf565b505050505092915050565b6000806000841315614ecc576001600160a01b038681166000908152600760209081526040808320938916835292905220600a810154600b9091015484614c9e57614c9082615c15565b9150614c9b81615c15565b90505b6000614ca983612dc3565b1315614d5457614cb98683615c4d565b935060008212614d24576001600160a01b038089166000908152600760209081526040808320938b1683529290522060060154841315614d1f576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015493505b614d80565b6001600160a01b038089166000908152600760209081526040808320938b16835292905220600101549350614d80565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493505b6000614d8b82612dc3565b1315614e99576001600160a01b038089166000908152600760209081526040808320938b1683529290522060030154614dc48783615c4d565b614dce9190615d09565b925060008112614e39576001600160a01b038089166000908152600760209081526040808320938b1683529290522060080154831315614e34576001600160a01b038089166000908152600760209081526040808320938b168352929052206008015492505b614ec5565b6001600160a01b038089166000908152600760208181526040808420948c1684529390529190200154831215614e34576001600160a01b038089166000908152600760208181526040808420948c16845293905291902001549250614ec5565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015492505b5050614eff565b50506001600160a01b03848116600090815260076020908152604080832093871683529290522060018101546003909101545b94509492505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614f3f5750600090506003614eff565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614f93573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614fbc57600060019250925050614eff565b9660009650945050505050565b60008060408385031215614fdc57600080fd5b50508035926020909101359150565b6001600160a01b03811681146111e057600080fd5b803561500b81614feb565b919050565b6000806040838503121561502357600080fd5b823561502e81614feb565b9150602083013561503e81614feb565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171561508357615083615049565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156150b2576150b2615049565b604052919050565b600067ffffffffffffffff8211156150d4576150d4615049565b5060051b60200190565b600082601f8301126150ef57600080fd5b813560206151046150ff836150ba565b615089565b82815260059290921b8401810191818101908684111561512357600080fd5b8286015b8481101561514757803561513a81614feb565b8352918301918301615127565b509695505050505050565b60006020828403121561516457600080fd5b813567ffffffffffffffff81111561517b57600080fd5b615187848285016150de565b949350505050565b600081518084526020808501945080840160005b838110156151c85781516001600160a01b0316875295820195908201906001016151a3565b509495945050505050565b602081526000610920602083018461518f565b6000806000606084860312156151fb57600080fd5b833561520681614feb565b9250602084013561521681614feb565b929592945050506040919091013590565b600082601f83011261523857600080fd5b813567ffffffffffffffff81111561525257615252615049565b6152656020601f19601f84011601615089565b81815284602083860101111561527a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156152af57600080fd5b8535945060208601356152c181614feb565b93506040860135925060608601359150608086013567ffffffffffffffff8111156152eb57600080fd5b6152f788828901615227565b9150509295509295909350565b6000806000806080858703121561531a57600080fd5b84359350602085013567ffffffffffffffff81111561533857600080fd5b615344878288016150de565b949794965050505060408301359260600135919050565b60006020828403121561536d57600080fd5b813567ffffffffffffffff81111561538457600080fd5b61518784828501615227565b80151581146111e057600080fd5b6000806000606084860312156153b357600080fd5b833592506020840135915060408401356153cc81615390565b809150509250925092565b600080604083850312156153ea57600080fd5b82359150602083013567ffffffffffffffff81111561540857600080fd5b615414858286016150de565b9150509250929050565b600080600080600060a0868803121561543657600080fd5b853561544181614feb565b9450602086013561545181614feb565b9350604086013567ffffffffffffffff81111561546d57600080fd5b615479888289016150de565b93505060608601359150608086013561549181614feb565b809150509295509295909350565b80516001600160a01b031682526020810151602083015260408101516154d060408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b610200810161553f828861549f565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b60006060828403121561557757600080fd5b6040516060810181811067ffffffffffffffff8211171561559a5761559a615049565b80604052508235815260208301356020820152604083013560408201528091505092915050565b6000602082840312156155d357600080fd5b813561092081614feb565b6000608082840312156155f057600080fd5b6040516080810181811067ffffffffffffffff8211171561561357615613615049565b604052905080823561562481614feb565b808252506020830135602082015260408301356040820152606083013561564a81614feb565b6060919091015292915050565b60008060008084860361024081121561566f57600080fd5b853561567a81614feb565b9450602086013561568a81614feb565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082018113156156be57600080fd5b6156c661505f565b91506156d460408801615000565b8252606087013560208301526156ec60808801615000565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050615767866101c087016155de565b905092959194509250565b60008060006060848603121561578757600080fd5b833561579281614feb565b925060208401356157a281614feb565b9150604084013567ffffffffffffffff8111156157be57600080fd5b6157ca868287016150de565b9150509250925092565b6101c081016157e3828661549f565b6101808201939093526101a00152919050565b600082601f83011261580757600080fd5b813560206158176150ff836150ba565b82815260059290921b8401810191818101908684111561583657600080fd5b8286015b84811015615147578035835291830191830161583a565b6000806000806080858703121561586757600080fd5b843567ffffffffffffffff8082111561587f57600080fd5b61588b888389016157f6565b955060208701359150808211156158a157600080fd5b6158ad888389016150de565b945060408701359150808211156158c357600080fd5b6158cf888389016150de565b935060608701359150808211156158e557600080fd5b506158f2878288016157f6565b91505092959194509250565b60008060008060008060c0878903121561591757600080fd5b863567ffffffffffffffff81111561592e57600080fd5b61593a89828a016150de565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b634e487b7160e01b600052601160045260246000fd5b60008282101561598b5761598b615963565b500390565b634e487b7160e01b600052603260045260246000fd5b600060001982036159b9576159b9615963565b5060010190565b6000816159cf576159cf615963565b506000190190565b600082198211156159ea576159ea615963565b500190565b600082615a0c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215615a2357600080fd5b815160ff8116811461092057600080fd5b600181815b80851115615a6f578160001904821115615a5557615a55615963565b80851615615a6257918102915b93841c9390800290615a39565b509250929050565b600082615a86575060016122f7565b81615a93575060006122f7565b8160018114615aa95760028114615ab357615acf565b60019150506122f7565b60ff841115615ac457615ac4615963565b50506001821b6122f7565b5060208310610133831016604e8410600b8410161715615af2575081810a6122f7565b615afc8383615a34565b8060001904821115615b1057615b10615963565b029392505050565b600061092060ff841683615a77565b600060208284031215615b3957600080fd5b5051919050565b6000816000190483118215151615615b5a57615b5a615963565b500290565b828152604060208201526000615187604083018461518f565b60006020808385031215615b8b57600080fd5b825167ffffffffffffffff811115615ba257600080fd5b8301601f81018513615bb357600080fd5b8051615bc16150ff826150ba565b81815260059190911b82018301908381019087831115615be057600080fd5b928401925b82841015615bfe57835182529284019290840190615be5565b979650505050505050565b60006109208383615a77565b60007f80000000000000000000000000000000000000000000000000000000000000008203615c4657615c46615963565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615615c8e57615c8e615963565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615615cc957615cc9615963565b60008712925087820587128484161615615ce557615ce5615963565b87850587128184161615615cfb57615cfb615963565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615615d4357615d43615963565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615615d7757615d77615963565b50500190565b60005b83811015615d98578181015183820152602001615d80565b838111156131355750506000910152565b60008251615dbb818460208701615d7d565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c0840152615e0f8160e0850160208701615d7d565b601f01601f19169190910160e001979650505050505050565b600060208284031215615e3a57600080fd5b815161092081615390565b85815284602082015260a060408201526000615e6460a083018661518f565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000615e9a608083018661518f565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215615ec857600080fd5b815161092081614feb565b634e487b7160e01b600052602160045260246000fdfea26469706673582212204915d80c684f01c667bf9fd0f5d078111bd5c203abe604f476f79e45740c82dd64736f6c634300080e0033",
1389
1474
  "linkReferences": {},
1390
1475
  "deployedLinkReferences": {}
1391
1476
  }
package/src/agent-swap.js CHANGED
@@ -3,6 +3,7 @@ let { HI, HERC20, HERC721 } = require("h-token-staking")
3
3
  let { abi, bytecode } = require("./abi/TokenMarket.json")
4
4
 
5
5
  let { plus, reduce, multiplication, division, saveNum, charCompare,longHandle,toSmall } = require("h-token-staking/src/utils")
6
+ const ERC20 = require("h-token-staking/src/ERC20")
6
7
 
7
8
 
8
9
  class AgentSwap extends HI {
@@ -125,6 +126,22 @@ class AgentSwap extends HI {
125
126
  return result
126
127
  }
127
128
 
129
+
130
+ async updateLimit({ buyMin = 0,buyMax = 0,holdMax = 0,token }) {
131
+ let pricing = new ERC20({ ...this.network,contract:token })
132
+ let precision = await pricing.decimals()
133
+ buyMin = longHandle(buyMin,precision)
134
+ buyMax = longHandle(buyMax,precision)
135
+ holdMax = longHandle(holdMax,precision)
136
+ let result = await this.manage("updateLimit", [
137
+ [
138
+ buyMin,buyMax,holdMax
139
+ ]
140
+ ])
141
+ return result
142
+ }
143
+
144
+
128
145
  async verifySign(signer) {
129
146
  let result = await this.manage("verifySign", [signer])
130
147
  return result
@@ -274,6 +291,16 @@ class AgentSwap extends HI {
274
291
  return result
275
292
  }
276
293
 
294
+ async limitBuy(pricing) {
295
+ let result = await this.SC.methods.limitBuy().call()
296
+ let token = new ERC20({ ...this.network,contract:pricing })
297
+ let precision = await token.decimals()
298
+ result.currentHold = toSmall(result.currentHold,precision)
299
+ result.buyMin = toSmall(result.buyMin,precision)
300
+ result.buyMax = toSmall(result.buyMax,precision)
301
+ result.holdMax = toSmall(result.holdMax,precision)
302
+ }
303
+
277
304
  async onlyRate(path) {
278
305
  let inToken = path[0]
279
306
  let outToken = path[path.length - 1]
@@ -294,14 +321,23 @@ class AgentSwap extends HI {
294
321
  // }
295
322
  // }
296
323
  console.log(result)
324
+ console.log(rates)
297
325
  let taxConfig = await this.SC.methods.taxConfig(inToken,outToken).call()
298
326
  result.taxRate = division(taxConfig.tax,this.pointMax)
299
327
  result.backRate = division(taxConfig.backBuy,this.pointMax)
300
328
  result.feeRate = division(rates.feeRate,this.pointMax)
301
329
  result.reward = division(rates.reward,this.pointMax)
330
+ let pricing = new ERC20({ ...this.network,contract:rates.pricing })
331
+ let precision = await pricing.decimals()
332
+ result.currentHold = toSmall(rates.currentHold,precision)
333
+ result.buyMin = toSmall(rates.limit.buyMin,precision)
334
+ result.buyMax = toSmall(rates.limit.buyMax,precision)
335
+ result.holdMax = toSmall(rates.limit.holdMax,precision)
336
+
302
337
  return result
303
338
  }
304
339
 
340
+
305
341
 
306
342
 
307
343
  async tradeConfig({ amount,path,side = 0,point = 1000 }) {