diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml deleted file mode 100644 index ff12eb4be..000000000 --- a/.github/workflows/integration-test.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Integration Test - -on: - push: - branches: - - master - - develop - - pull_request: - branches: - - master - - develop - -jobs: - truffle-test: - strategy: - matrix: - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Truffle test - run: | - make truffle-test diff --git a/core/systemcontracts/hermes/pigeon/BTCStakeContract b/core/systemcontracts/hermes/pigeon/BTCStakeContract index 9d9edfd0c..401fe802d 100644 --- a/core/systemcontracts/hermes/pigeon/BTCStakeContract +++ b/core/systemcontracts/hermes/pigeon/BTCStakeContract @@ -1 +1 @@ -608060405234801561001057600080fd5b50600436106102de5760003560e01c80637a018cdf11610186578063b1171724116100e3578063cb57748011610097578063e1c7392a11610071578063e1c7392a14610757578063e8beb1c01461075f578063f9a2bbc71461078a57600080fd5b8063cb5774801461071a578063d72b08c61461072d578063dc927faf1461074e57600080fd5b8063b77ea2d7116100c8578063b77ea2d7146106d7578063c3584254146106ec578063c81b16621461071157600080fd5b8063b1171724146106c5578063b3d676f3146106ce57600080fd5b80639dc092621161013a578063a78abc161161011f578063a78abc161461069c578063aa82dce1146106a9578063ac431751146106b257600080fd5b80639dc0926214610680578063a6d26d471461068957600080fd5b806383d443391161016b57806383d44339146105a757806385e137d3146105f1578063981c27ea1461066d57600080fd5b80637a018cdf146104a3578063822b096e1461059457600080fd5b80633be932d21161023f5780635d25e51d116101f3578063773b807e116101cd578063773b807e14610474578063783028a91461048757806379ce9fac1461049057600080fd5b80635d25e51d146104415780635efc83de1461044a57806375b10c711461045d57600080fd5b806343756e5c1161022457806343756e5c146103f75780634b22fc621461040057806350fe74081461043857600080fd5b80633be932d2146103d15780633d1f0974146103e457600080fd5b806320c94d98116102965780632a5d69b21161027b5780632a5d69b2146103aa5780632d7e3eda146103b35780633b768160146103c857600080fd5b806320c94d981461036557806325ee13e2146103a157600080fd5b80630990e909116102c75780630990e9091461031f5780631146feb81461033f57806314c1e1f71461035c57600080fd5b8063042295e1146102e357806304e9e3a414610316575b600080fd5b6102ec61101781565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102ec61100781565b61033261032d366004616013565b610793565b60405161030d919061651d565b600c5461034c9060ff1681565b604051901515815260200161030d565b6102ec61100481565b61038c610373366004616013565b6007602052600090815260409020805460019091015482565b6040805192835260208301919091520161030d565b6102ec61100581565b6102ec61101281565b6103c66103c136600461627e565b61080c565b005b6102ec61101481565b61038c6103df366004616088565b610bd2565b6103326103f23660046160cf565b610f39565b6102ec61100181565b61041361040e366004616223565b611056565b6040805167ffffffffffffffff909316835263ffffffff90911660208301520161030d565b6102ec61101681565b6102ec61101181565b610332610458366004616013565b611094565b61046660045481565b60405190815260200161030d565b6103c6610482366004616178565b61110e565b6102ec61100881565b6103c661049e366004616253565b611211565b61054f6104b1366004616223565b60026020526000908152604090205467ffffffffffffffff8082169163ffffffff6801000000000000000082048116926c010000000000000000000000008304821692700100000000000000000000000000000000810490911691780100000000000000000000000000000000000000000000000082048116917c010000000000000000000000000000000000000000000000000000000090041686565b6040805167ffffffffffffffff978816815263ffffffff96871660208201529486169085015294909116606083015282166080820152911660a082015260c00161030d565b6103c66105a236600461610f565b61178c565b6105d66105b5366004616013565b60086020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161030d565b61063a6105ff366004616223565b60056020526000908152604090208054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff918216929091169083565b6040805173ffffffffffffffffffffffffffffffffffffffff94851681529390921660208401529082015260600161030d565b6103c661067b366004616300565b611a10565b6102ec61100681565b610466610697366004616253565b612195565b60005461034c9060ff1681565b6102ec61101081565b6103c66106c03660046163f1565b6121cf565b6102ec61100981565b6102ec61101381565b6106df612b72565b60405161030d9190616530565b6009546106fc9063ffffffff1681565b60405163ffffffff909116815260200161030d565b6102ec61100281565b6103c6610728366004616223565b612bf1565b61074061073b366004616056565b612e15565b60405161030d92919061658f565b6102ec61100381565b6103c6613054565b61046661076d36600461602d565b600360209081526000928352604080842090915290825290205481565b6102ec61100081565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602090815260409182902080548351818402810184019094528084526060939283018282801561080057602002820191906000526020600020905b8154815260200190600101908083116107ec575b50505050509050919050565b610814613182565b600061085586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506131dc92505050565b6009546040517fedade1890000000000000000000000000000000000000000000000000000000081529192506000916110039163edade189916108a99186918a9163ffffffff16908a908a906004016165e5565b60206040518083038186803b1580156108c157600080fd5b505afa1580156108d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f991906161c2565b90508061094d5760405162461bcd60e51b815260206004820152601660248201527f6274632074782069736e277420636f6e6669726d65640000000000000000000060448201526064015b60405180910390fd5b600061098e88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132aa92505050565b509092506109a691505062ffffff198216600661342f565b5060006109b962ffffff19831682613531565b67ffffffffffffffff16905060008080805b84811015610b6d576109e362ffffff19871682613678565b6000828152600260205260409020805491955091935067ffffffffffffffff1615801590610a265750805463ffffffff8581166801000000000000000090920416145b15610b5c5780547c0100000000000000000000000000000000000000000000000000000000900463ffffffff1615610ac65760405162461bcd60e51b815260206004820152602260248201527f627463206f757470757420697320616c726561647920756e64656c656761746560448201527f642e0000000000000000000000000000000000000000000000000000000000006064820152608401610944565b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff8e1602178155610b18856169ad565b94508363ffffffff16837f11e4685d914d513c078f2520ce18170550bf421495a0b11d9a2e82b0ac02ac328b604051610b5391815260200190565b60405180910390a35b50610b66816169ad565b90506109cb565b5082610bbb5760405162461bcd60e51b815260206004820152601660248201527f6e6f2062746320747820756e64656c6567617465642e000000000000000000006044820152606401610944565b50505050505050610bcb60018055565b5050505050565b6000803361101314610c4c5760405162461bcd60e51b815260206004820152602d60248201527f746865206d73672073656e646572206d75737420626520626974636f696e206160448201527f67656e7420636f6e7472616374000000000000000000000000000000000000006064820152608401610944565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260066020526040812080548291829182905b8015610f2a5782610c8c600183616903565b81548110610caa57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549150610cda828c60056000868152602001908152602001600020600201548d8d6136cd565b9d5090975090955093508415610db2576000828152600260205260409020546c01000000000000000000000000900463ffffffff168015610db0576040517f2ab66e7000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526024810187905261101790632ab66e7090604401602060405180830381600087803b158015610d7557600080fd5b505af1158015610d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dad919061623b565b95505b505b610dbc8589616797565b9750610dc88488616723565b96508515610f185760008281526005602052604080822060010154905173ffffffffffffffffffffffffffffffffffffffff9091169184917fab9cd399cf9f01321f73b32d2b1e2c6034d379277171bcd887b269416c0ef3bb9190a3600082815260056020526040812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116825560018201805490911690556002015582548114610ee35782548390610e8190600190616903565b81548110610e9f57634e487b7160e01b600052603260045260246000fd5b906000526020600020015483600183610eb89190616903565b81548110610ed657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001555b82805480610f0157634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590555b80610f2281616996565b915050610c7a565b50505050505094509492505050565b6060818067ffffffffffffffff811115610f6357634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610f8c578160200160208202803683370190505b50915060005b8181101561104e5760076000868684818110610fbe57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610fd39190616013565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015483828151811061103157634e487b7160e01b600052603260045260246000fd5b602090810291909101015280611046816169ad565b915050610f92565b505092915050565b600b818154811061106657600080fd5b60009182526020909120015467ffffffffffffffff8116915068010000000000000000900463ffffffff1682565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602090815260409182902060020180548351818402810184019094528084526060939283018282801561080057602002820191906000526020600020908154815260200190600101908083116107ec5750505050509050919050565b33611013146111855760405162461bcd60e51b815260206004820152602d60248201527f746865206d73672073656e646572206d75737420626520626974636f696e206160448201527f67656e7420636f6e7472616374000000000000000000000000000000000000006064820152608401610944565b816000805b82811015611207578585828181106111b257634e487b7160e01b600052603260045260246000fd5b90506020020160208101906111c79190616013565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260409020600181015490559150806111ff816169ad565b91505061118a565b5050506004555050565b611219613182565b60008281526002602090815260408083206005909252909120815467ffffffffffffffff168061128b5760405162461bcd60e51b815260206004820152601060248201527f627463207478206e6f7420666f756e64000000000000000000000000000000006044820152606401610944565b600182015473ffffffffffffffffffffffffffffffffffffffff16331461131a5760405162461bcd60e51b815260206004820152602560248201527f6e6f74207468652064656c656761746f72206f6620746869732062746320726560448201527f63656970740000000000000000000000000000000000000000000000000000006064820152608401610944565b815473ffffffffffffffffffffffffffffffffffffffff9081169085168114156113ac5760405162461bcd60e51b815260206004820152602660248201527f63616e206e6f74207472616e7366657220746f207468652073616d652076616c60448201527f696461746f7200000000000000000000000000000000000000000000000000006064820152608401610944565b83546000906113e19062015180907801000000000000000000000000000000000000000000000000900463ffffffff16616827565b905060045460016113f29190616797565b81116114405760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e74206c6f636b696e6720726f756e647300000000006044820152606401610944565b6040517fc666907b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526110059063c666907b9060240160206040518083038186803b1580156114a757600080fd5b505afa1580156114bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114df91906161c2565b61152d576040517f97f6800700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152602401610944565b60018401546040517f451c20a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526110109063451c20a590602401600060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120600181018054919267ffffffffffffffff8716926115f8908490616903565b90915550506000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684526001019091528120805467ffffffffffffffff87169290611649908490616903565b909155505084547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816178555600454600286015585546116c49086907801000000000000000000000000000000000000000000000000900463ffffffff1686613ae0565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600760205260408120600181018054919267ffffffffffffffff881692611708908490616797565b909155505086546040805173ffffffffffffffffffffffffffffffffffffffff87811682528b166020820152338183015267ffffffffffffffff9092166060830152518a917f131a10ab89910bd3a30ed9bbf71f1bce939e3d654a7cd7474ca5887eab499c82919081900360800190a25050505050505061178860018055565b5050565b33611013146118035760405162461bcd60e51b815260206004820152602d60248201527f746865206d73672073656e646572206d75737420626520626974636f696e206160448201527f67656e7420636f6e7472616374000000000000000000000000000000000000006064820152608401610944565b82600080805b83811015611a065785858281811061183157634e487b7160e01b600052603260045260246000fd5b9050602002013560001415611845576119f4565b60008089898481811061186857634e487b7160e01b600052603260045260246000fd5b905060200201602081019061187d9190616013565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602090815260408083206007909252909120805492965090916118c157505050506119f4565b60028101549650861561191e57600281016118dd600189616903565b815481106118fb57634e487b7160e01b600052603260045260246000fd5b906000526020600020015492508160008481526020019081526020016000205493505b80546305f5e1008b8b8881811061194557634e487b7160e01b600052603260045260246000fd5b905060200201356119569190616847565b6119609190616827565b61196a9085616797565b600480546000908152602085905260409020919091555461198c846001616797565b14156119d357600454600282016119a460018a616903565b815481106119c257634e487b7160e01b600052603260045260246000fd5b6000918252602090912001556119ef565b6004546002820180546001810182556000918252602090912001555b505050505b806119fe816169ad565b915050611809565b5050505050505050565b611a18613182565b80517f0400000000000000000000000000000000000000000000000000000000000000908290600090611a5b57634e487b7160e01b600052603260045260246000fd5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016148015611af8575080517fb1000000000000000000000000000000000000000000000000000000000000009082906005908110611acf57634e487b7160e01b600052603260045260246000fd5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b611b445760405162461bcd60e51b815260206004820152601960248201527f6e6f7420612076616c69642072656465656d20736372697074000000000000006044820152606401610944565b6000611b8587878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506131dc92505050565b600081815260026020526040902080549192509067ffffffffffffffff1615611bf05760405162461bcd60e51b815260206004820152601c60248201527f62746320747820697320616c72656164792064656c6567617465642e000000006044820152606401610944565b6000611bfb84613bd7565b6009546040517fab6d0e5100000000000000000000000000000000000000000000000000000000815291925060009182916110039163ab6d0e5191611c539189918e9163ffffffff909116908e908e906004016165e5565b604080518083038186803b158015611c6a57600080fd5b505afa158015611c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca291906161de565b9250905080611cf35760405162461bcd60e51b815260206004820152601660248201527f6274632074782069736e277420636f6e6669726d6564000000000000000000006044820152606401610944565b6000611d086201518063ffffffff8616616827565b90506004546001611d199190616797565b8111611d675760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e74206c6f636b696e6720726f756e647300000000006044820152606401610944565b50506000600560008681526020019081526020016000209050600080600080611dc58f8f8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132aa92505050565b5092505050600080611dd7838d613d2d565b6040517f541d5548000000000000000000000000000000000000000000000000000000008152336004820152919a50985092965090935091506110049063541d55489060240160206040518083038186803b158015611e3557600080fd5b505afa158015611e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6d91906161c2565b80611e8d57503373ffffffffffffffffffffffffffffffffffffffff8716145b611eff5760405162461bcd60e51b815260206004820152603860248201527f6f6e6c792064656c656761746f72206f722072656c617965722063616e20737560448201527f626d69742074686520425443207472616e73616374696f6e00000000000000006064820152608401610944565b6040517f451c20a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526110109063451c20a590602401600060405180830381600087803b158015611f6857600080fd5b505af1158015611f7c573d6000803e3d6000fd5b50505050888a60000160186101000a81548163ffffffff021916908363ffffffff160217905550878a60000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550838a60000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550818a60000160086101000a81548163ffffffff021916908363ffffffff160217905550808a600001600c6101000a81548163ffffffff021916908363ffffffff1602179055508573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168c7f3391934a441f8a4f5bd3ffdc8b4c59b386061114e16b83d51cc73b1e41c0c0a08f868960006040516120a49493929190616626565b60405180910390a450505073ffffffffffffffffffffffffffffffffffffffff8084166000908152600660209081526040808320805460018181018355918552838520018d9055938616835260079091528120909101805467ffffffffffffffff84169290612114908490616797565b909155505060018401805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925585549184169116178455600454600285015561217c848783613ae0565b505050505050505061218d60018055565b505050505050565b6000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff851684526001019091529020545b92915050565b60005460ff166122215760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610944565b33611006146122985760405162461bcd60e51b815260206004820152602a60248201527f746865206d73672073656e646572206d75737420626520676f7665726e616e6360448201527f6520636f6e7472616374000000000000000000000000000000000000000000006064820152608401610944565b61230c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600681527f6772616465730000000000000000000000000000000000000000000000000000602082015291506140e59050565b1561297457600b54604080516020601f850181900481028201810190925283815260009161235d9161235891879087908190840183828082843760009201919091525061413e92505050565b61416b565b80519091508061239d5786866040517fad23613c000000000000000000000000000000000000000000000000000000008152600401610944929190616665565b805b8381101561241257600b8054806123c657634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180547fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690550190558061240a816169ad565b91505061239f565b5060008060005b8381101561272c57600061245386838151811061244657634e487b7160e01b600052603260045260246000fd5b602002602001015161416b565b90506124868160008151811061247957634e487b7160e01b600052603260045260246000fd5b602002602001015161429d565b9350610fa084111561250a576040517f808861f900000000000000000000000000000000000000000000000000000000815260806004820152600c60848201527f6c6f636b4475726174696f6e000000000000000000000000000000000000000060a48201526024810184905260006044820152610fa0606482015260c401610944565b61252e8160018151811061247957634e487b7160e01b600052603260045260246000fd5b925082158061253e575061271083115b156125bb576040517f808861f900000000000000000000000000000000000000000000000000000000815260806004820152600a60848201527f70657263656e746167650000000000000000000000000000000000000000000060a48201526024810184905260016044820152612710606482015260c401610944565b6125c86201518085616847565b9350868210612674576040805180820190915267ffffffffffffffff808616825263ffffffff80861660208401908152600b805460018101825560009190915293517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99094018054915190921668010000000000000000027fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009091169390921692909217179055612719565b60405180604001604052808567ffffffffffffffff1681526020018463ffffffff16815250600b83815481106126ba57634e487b7160e01b600052603260045260246000fd5b6000918252602091829020835191018054939092015163ffffffff1668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090931667ffffffffffffffff909116179190911790555b5080612724816169ad565b915050612419565b5060015b838110156128e457600b818154811061275957634e487b7160e01b600052603260045260246000fd5b60009182526020909120015467ffffffffffffffff16600b61277c600184616903565b8154811061279a57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015467ffffffffffffffff16106127fd5760405162461bcd60e51b815260206004820152601560248201527f6c6f636b4475726174696f6e206469736f7264657200000000000000000000006044820152606401610944565b600b818154811061281e57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015468010000000000000000900463ffffffff16600b612849600184616903565b8154811061286757634e487b7160e01b600052603260045260246000fd5b60009182526020909120015468010000000000000000900463ffffffff16106128d25760405162461bcd60e51b815260206004820152601360248201527f70657263656e74616765206469736f72646572000000000000000000000000006044820152606401610944565b806128dc816169ad565b915050612730565b50600b60008154811061290757634e487b7160e01b600052603260045260246000fd5b60009182526020909120015467ffffffffffffffff161561296a5760405162461bcd60e51b815260206004820181905260248201527f6c6f77657374206c6f636b4475726174696f6e206d757374206265207a65726f6044820152606401610944565b5050505050612b2f565b6129e884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81527f6772616465416374697665000000000000000000000000000000000000000000602082015291506140e59050565b15612af95760018114612a2b5783836040517fad23613c000000000000000000000000000000000000000000000000000000008152600401610944929190616665565b6000612a71600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061436a9050565b905060018160ff161115612abd57848482600060016040517f808861f90000000000000000000000000000000000000000000000000000000081526004016109449594939291906166ab565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600160ff90931692909214919091179055612b2f565b83836040517f64b4f604000000000000000000000000000000000000000000000000000000008152600401610944929190616665565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612b649493929190616679565b60405180910390a150505050565b6060600b805480602002602001604051908101604052809291908181526020016000905b82821015612be8576000848152602090819020604080518082019091529084015467ffffffffffffffff8116825268010000000000000000900463ffffffff1681830152825260019092019101612b96565b50505050905090565b3361101014612c685760405162461bcd60e51b815260206004820152602960248201527f746865206d73672073656e646572206d757374206265207374616b652068756260448201527f20636f6e747261637400000000000000000000000000000000000000000000006064820152608401610944565b6000806004546001612c7a9190616797565b90505b828111612e10576000818152600a60205260409020805480612ca0575050612e00565b805b8015612de15782612cb4600183616903565b81548110612cd257634e487b7160e01b600052603260045260246000fd5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526001868101909252604090922054919650612d1391616903565b73ffffffffffffffffffffffffffffffffffffffff861660009081526007602052604081206001018054909190612d4b908490616903565b90915550508254839080612d6f57634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff871682526001850190526040812055612dda81616996565b9050612ca2565b506000838152600a6020526040812090612dfb8282615e9f565b505050505b612e09816169ad565b9050612c7d565b505050565b6060803361101314612e8f5760405162461bcd60e51b815260206004820152602d60248201527f746865206d73672073656e646572206d75737420626520626974636f696e206160448201527f67656e7420636f6e7472616374000000000000000000000000000000000000006064820152608401610944565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260066020526040902080548067ffffffffffffffff811115612edd57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612f06578160200160208202803683370190505b5093508067ffffffffffffffff811115612f3057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612f59578160200160208202803683370190505b509250600080825b80156130475784612f73600183616903565b81548110612f9157634e487b7160e01b600052603260045260246000fd5b90600052602060002001549150612fc2828a60056000868152602001908152602001600020600201548b60016136cd565b8a612fce600187616903565b81518110612fec57634e487b7160e01b600052603260045260246000fd5b602002602001018a6001876130019190616903565b8151811061301f57634e487b7160e01b600052603260045260246000fd5b602090810291909101019290925292905290995092508061303f81616996565b915050612f61565b5050505050935093915050565b60005460ff16156130a75760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e6974000000000000006044820152606401610944565b61100573ffffffffffffffffffffffffffffffffffffffff166373fa03ed6040518163ffffffff1660e01b815260040160206040518083038186803b1580156130ef57600080fd5b505afa158015613103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613127919061623b565b600455600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000166006179055600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600260015414156131d55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610944565b6002600155565b6000806002836040516131ef9190616501565b602060405180830381855afa15801561320c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061322f919061623b565b9050600060028260405160200161324891815260200190565b60408051601f198184030181529082905261326291616501565b602060405180830381855afa15801561327f573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906132a2919061623b565b949350505050565b6000808080806132ba86826143d0565b90506132d76132d262ffffff198316600060046143f4565b61454b565b94506004600061330b6132fc83601886901c6bffffffffffffffffffffffff16616903565b62ffffff1985169060006145cb565b9050600061331882614609565b9050613331838260065b62ffffff1988169291906146e8565b965061333d8184616797565b925061336d61335e84601887901c6bffffffffffffffffffffffff16616903565b62ffffff1986169060006145cb565b9150600061337a8361476c565b90506133938482600f5b62ffffff1989169291906146e8565b965061339f8185616797565b93506133b66132d262ffffff1987168660046143f4565b9550601885901c6bffffffffffffffffffffffff166133d6856004616797565b146134235760405162461bcd60e51b815260206004820152601960248201527f426974636f696e48656c7065723a20696e76616c6964207478000000000000006044820152606401610944565b50505050509193509193565b600061343b8383614841565b61352a57600061345a61344e8560d81c90565b64ffffffffff16614864565b915050600061346f8464ffffffffff16614864565b6040517f5479706520617373657274696f6e206661696c65642e20476f7420307800000060208201527fffffffffffffffffffff0000000000000000000000000000000000000000000060b086811b8216603d8401527f2e20457870656374656420307800000000000000000000000000000000000000604784015283901b16605482015290925060009150605e015b60405160208183030381529060405290508060405162461bcd60e51b815260040161094491906166df565b5090919050565b60008061354662ffffff198516846001614910565b905060fc81116135615761355981614940565b9150506121c9565b8060fd14156135c75761358f61358a61357b856001616797565b62ffffff1987169060026143f4565b614940565b915061359a826149c0565b60ff166003146135c2576135c06135bb62ffffff19861685600360006146e8565b614a21565b505b613671565b8060fe141561361c576135f061358a6135e1856001616797565b62ffffff1987169060046143f4565b91506135fb826149c0565b60ff166005146135c2576135c06135bb62ffffff19861685600560006146e8565b8060ff14156136715761364561358a613636856001616797565b62ffffff1987169060086143f4565b9150613650826149c0565b60ff166009146136715761104e6135bb62ffffff19861685600960006146e8565b5092915050565b600080836006613690815b62ffffff1984169061342f565b50600061369d8787614abe565b905060006136aa82614bfe565b90506136b581614c25565b95506136c081614c47565b9450505050509250929050565b60008080808661371f5760405162461bcd60e51b815260206004820152601760248201527f696e76616c6964206465706f73697420726563656970740000000000000000006044820152606401610944565b60045486106137705760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420736574746c6520726f756e640000000000000000000000006044820152606401610944565b600061377c8a88614c6c565b9097509350889150600080888a1015613ad15760008c81526002602090815260408083206005909252909120815481546305f5e1009167ffffffffffffffff16906137dd9073ffffffffffffffffffffffffffffffffffffffff168f614cd5565b83546137ff9073ffffffffffffffffffffffffffffffffffffffff168f614cd5565b6138099190616903565b6138139190616847565b61381d9190616827565b8254600283018d905590995067ffffffffffffffff1694508815613ace57600c5460009060ff1680156138515750600b5415155b156139d75782546000906138a590700100000000000000000000000000000000810467ffffffffffffffff16907801000000000000000000000000000000000000000000000000900463ffffffff1661691a565b9050600b6000815481106138c957634e487b7160e01b600052603260045260246000fd5b6000918252602082200154600b546801000000000000000090910463ffffffff1697506138f890600190616903565b90505b801561399a57600b818154811061392257634e487b7160e01b600052603260045260246000fd5b60009182526020909120015467ffffffffffffffff9081169083161061398857600b818154811061396357634e487b7160e01b600052603260045260246000fd5b60009182526020909120015468010000000000000000900463ffffffff16965061399a565b8061399281616996565b9150506138fb565b506127106139a8878d616847565b6139b29190616827565b91506139bd8b614e40565b6139c683614e40565b6139d0919061688f565b9850819a50505b6139e18e87614ed8565b90975093506127106139f3858c616847565b6139fd9190616827565b9050613a088a614e40565b613a1182614e40565b613a1b919061688f565b613a259089616723565b97508099508a15613a8057604080518b81528a15156020820152908101869052606081018590528f907fb2f336888bf47e4557c93c9bc79451609a9792d47be2e38a18d2d1f3b2d383af9060800160405180910390a2613acc565b604080518b81528a15156020820152908101869052606081018590528f907f203216252e638668b95f2c8ccbc1d112139eed9fada5ec54fbd0174e12ff35f09060800160405180910390a25b505b50505b50505095509550955095915050565b6000613af56201518063ffffffff8516616827565b6000818152600a60209081526040808320885473ffffffffffffffffffffffffffffffffffffffff16845260018101909252909120549192509080613b905750845481546001818101845560008481526020902090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909316929092179091555b613ba467ffffffffffffffff851682616797565b955473ffffffffffffffffffffffffffffffffffffffff1660009081526001909201602052506040902093909355505050565b6021810151600090613d208160008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b63ffffffff169392505050565b600080808080613d4462ffffff198816600f61342f565b50600080808080613d5b62ffffff198d1682613531565b67ffffffffffffffff1690506000805b8281101561403057613d8362ffffff198f1682614fb4565b9650613d9462ffffff1988166150c7565b9550613da562ffffff198816615111565b9450613db662ffffff19861661515c565b935062ffffff198085161415614009576017601887901c6bffffffffffffffffffffffff16148015613dfa5750613df662ffffff19871660006001614910565b60a9145b8015613e175750613e1362ffffff198716600180614910565b6014145b8015613e355750613e3162ffffff19871660166001614910565b6087145b8015613f295750600360028e604051613e4e9190616501565b602060405180830381855afa158015613e6b573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190613e8e919061623b565b604051602001613ea091815260200190565b60408051601f1981840301815290829052613eba91616501565b602060405180830381855afa158015613ed7573d6000803e3d6000fd5b50506040515160601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169050613f1562ffffff1988166002615365565b60601b6bffffffffffffffffffffffff1916145b80613fea57506022601887901c6bffffffffffffffffffffffff16148015613f615750613f5f62ffffff19871660006001614910565b155b8015613f7e5750613f7a62ffffff198716600180614910565b6020145b8015613fea575060028d604051613f959190616501565b602060405180830381855afa158015613fb2573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190613fd5919061623b565b613fe862ffffff19881660026020615373565b145b1561400457613ffe62ffffff198816615510565b9b50809a505b61401e565b61401284615535565b919b5099509750600191505b80614028816169ad565b915050613d6b565b5067ffffffffffffffff8b166140885760405162461bcd60e51b815260206004820152601460248201527f7374616b65642076616c7565206973207a65726f0000000000000000000000006044820152606401610944565b806140d55760405162461bcd60e51b815260206004820152600b60248201527f6e6f206f7072657475726e0000000000000000000000000000000000000000006044820152606401610944565b5050505050509295509295909350565b6000816040516020016140f89190616501565b604051602081830303815290604052805190602001208360405160200161411f9190616501565b6040516020818303038152906040528051906020012014905092915050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60606141768261575c565b61417f57600080fd5b600061418a83615795565b905060008167ffffffffffffffff8111156141b557634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156141fa57816020015b60408051808201909152600080825260208201528152602001906001900390816141d35790505b509050600061420c8560200151615818565b856020015161421b9190616797565b90506000805b848110156142925761423283615899565b915060405180604001604052808381526020018481525084828151811061426957634e487b7160e01b600052603260045260246000fd5b602090810291909101015261427e8284616797565b92508061428a816169ad565b915050614221565b509195945050505050565b8051600090158015906142b257508151602110155b6142bb57600080fd5b60006142ca8360200151615818565b905080836000015110156143205760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f66667365740000000000006044820152606401610944565b8251600090614330908390616903565b90506000808386602001516143459190616797565b905080519150602083101561436157826020036101000a820491505b50949350505050565b6000614377826001616797565b835110156143c75760405162461bcd60e51b815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610944565b50016001015190565b8151600090602084016143eb64ffffffffff851682846159db565b95945050505050565b6000614541614404858585615373565b60008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b90505b9392505050565b600063ffffffff8211156145c75760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610944565b5090565b600061454184846145ea8760181c6bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff166146029190616903565b85856146e8565b6000601882901c6bffffffffffffffffffffffff1661462a57506000919050565b6000614637836000613531565b9050601883901c6bffffffffffffffffffffffff1667ffffffffffffffff8216614665575060009392505050565b6000614670836149c0565b60ff16905060005b8367ffffffffffffffff168110156143615782821061469d5750600095945050505050565b60006146bd6146ac8486616903565b60055b62ffffff198a1691906145cb565b90506146c881615a1f565b6146d29084616797565b92505080806146e0906169ad565b915050614678565b6000806147038660781c6bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff16905061471c86615a74565b846147278784616797565b6147319190616797565b11156147445762ffffff199150506132a2565b61474e8582616797565b90506147628364ffffffffff1682866159db565b9695505050505050565b6000601882901c6bffffffffffffffffffffffff1661478d57506000919050565b600061479a836000613531565b9050601883901c6bffffffffffffffffffffffff1667ffffffffffffffff82166147c8575060009392505050565b60006147d3836149c0565b60ff16905060005b8367ffffffffffffffff16811015614361578282106148005750600095945050505050565b600061481661480f8486616903565b600e6146af565b905061482181615ac4565b61482b9084616797565b9250508080614839906169ad565b9150506147db565b60008164ffffffffff166148558460d81c90565b64ffffffffff16149392505050565b600080601f5b600f8160ff1611156148c2576000614883826008616866565b60ff1685901c905061489481615b0e565b61ffff16841793508160ff166010146148af57601084901b93505b506148bb600182616943565b905061486a565b50600f5b60ff8160ff16101561490a5760ff600882021684901c6148e581615b0e565b61ffff16831792508160ff1660001461490057601083901b92505b50600019016148c6565b50915091565b600061491d826020616943565b614928906008616866565b60ff16614936858585615373565b901c949350505050565b600067ffffffffffffffff8211156145c75760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f34206269747300000000000000000000000000000000000000000000000000006064820152608401610944565b600060fc8267ffffffffffffffff16116149dc57506001919050565b61ffff8267ffffffffffffffff16116149f757506003919050565b63ffffffff8267ffffffffffffffff1611614a1457506005919050565b506009919050565b919050565b60606000614a5a614a5582614a47601887901c6bffffffffffffffffffffffff16615b40565b62ffffff1987169190614910565b614864565b6040517f4e6f6e2d6d696e696d616c2076617220696e742e20476f74203078000000000060208201527fffffffffffffffffffffffffffffffffffff0000000000000000000000000000607083901b16603b82015290925060009150604d016134ff565b6000826006614acc81613683565b506000614ada866000613531565b67ffffffffffffffff169050601886901c6bffffffffffffffffffffffff16818610614b485760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e000000000000000000000000000000006044820152606401610944565b6000614b53836149c0565b60ff1690506000805b88811015614bab57614b82614b718486616903565b60055b62ffffff198d1691906145cb565b9150614b8d82615a1f565b614b979084616797565b9250614ba4600182616797565b9050614b5c565b50614bca614bb98385616903565b60055b62ffffff198c1691906145cb565b90506000614bd782615a1f565b9050614bf0838260045b62ffffff198e169291906146e8565b9a9950505050505050505050565b6000816004614c0c81613683565b50614c1b600060246003613322565b92505b5050919050565b6000816003614c3381613683565b50614c1b62ffffff19851660006020615373565b6000816003614c5581613683565b50614c1b6132d262ffffff198616602060046143f4565b60008281526002602052604081208054829190600190614cb29062015180907801000000000000000000000000000000000000000000000000900463ffffffff16616827565b614cbc9190616903565b925083831115915081614ccd578392505b509250929050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602090815260408083208484529091529020548015614d11576121c9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260409020600281015480614d4b576000925050506121c9565b614d56600182616903565b90506000806000805b848411614df1576002614d728686616797565b614d7c9190616827565b9250856002018381548110614da157634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905087811015614dcb57905080614dc4836001616797565b9350614d5f565b82614ddf57600096505050505050506121c9565b614dea600184616903565b9450614d5f565b8115614e345773ffffffffffffffffffffffffffffffffffffffff89166000908152600360209081526040808320858452909152808220548a8352912081905596505b50505050505092915050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156145c75760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401610944565b6000808080614ee78587616827565b6040517fe1e0485e000000000000000000000000000000000000000000000000000000008152600481018290529091506110139063e1e0485e90602401604080518083038186803b158015614f3b57600080fd5b505afa158015614f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f73919061644e565b90925090506000614f848683616847565b905080871115614f9f57614f988188616903565b9650614fa4565b600096505b50859350909150505b9250929050565b600082600f614fc281613683565b506000614fd0866000613531565b67ffffffffffffffff169050601886901c6bffffffffffffffffffffffff1681861061503e5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e0000000000000000000000000000006044820152606401610944565b6000615049836149c0565b60ff1690506000805b888110156150975761506e6150678486616903565b600e614b74565b915061507982615ac4565b6150839084616797565b9250615090600182616797565b9050615052565b506150ac6150a58385616903565b600e614bbc565b905060006150b982615ac4565b9050614bf08382600d614be1565b600081600d6150d581613683565b5060006150e3856008613531565b90506143eb6150f1826149c0565b6150fc9060086167db565b60ff1667ffffffffffffffff83166007613384565b600081600d61511f81613683565b50600061512d856008613531565b90506143eb60088261513e846149c0565b60ff1661514b91906167af565b67ffffffffffffffff166007613384565b600081600761516a81613683565b506000615178856000613531565b905061518c62ffffff198616600180614910565b606a141561535b576151a762ffffff19861660026001614910565b604c141561528f5760006151c761358a62ffffff19881660036001614910565b90506151d460038361691a565b67ffffffffffffffff168167ffffffffffffffff16148015615201575060538267ffffffffffffffff1611155b80156152185750604f8267ffffffffffffffff1610155b6152645760405162461bcd60e51b815260206004820152601f60248201527f426974636f696e48656c7065723a20696e76616c6964206f7072657475726e006044820152606401610944565b615286600467ffffffffffffffff8316600c5b62ffffff198a169291906146e8565b94505050614c1e565b60006152a761358a62ffffff19881660026001614910565b90506152b460028361691a565b67ffffffffffffffff168167ffffffffffffffff161480156152e15750604d8267ffffffffffffffff1611155b80156152f8575060048267ffffffffffffffff1610155b6153445760405162461bcd60e51b815260206004820152601f60248201527f426974636f696e48656c7065723a20696e76616c6964206f7072657475726e006044820152606401610944565b615286600367ffffffffffffffff8316600c615277565b62ffffff196143eb565b600061454483836014614910565b600060ff821661538557506000614544565b61539d8460181c6bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff166153b860ff841685616797565b1115615430576154176153d98560781c6bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff166153ff8660181c6bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff16858560ff16615bb9565b60405162461bcd60e51b815260040161094491906166df565b60208260ff1611156154aa5760405162461bcd60e51b815260206004820152603a60248201527f54797065644d656d566965772f696e646578202d20417474656d70746564207460448201527f6f20696e646578206d6f7265207468616e2033322062797465730000000000006064820152608401610944565b6008820260006154c88660781c6bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff16905060007f800000000000000000000000000000000000000000000000000000000000000060001984011d91909501511695945050505050565b600081600d61551e81613683565b50614c1b61358a62ffffff198616600060086143f4565b600080806030601885901c6bffffffffffffffffffffffff16101561559c5760405162461bcd60e51b815260206004820152601b60248201527f7061796c6f6164206c656e67746820697320746f6f20736d616c6c00000000006044820152606401610944565b635341542b6155b462ffffff19861660006004614910565b146156015760405162461bcd60e51b815260206004820152600b60248201527f77726f6e67206d616769630000000000000000000000000000000000000000006044820152606401610944565b61045a61561762ffffff19861660056002614910565b146156645760405162461bcd60e51b815260206004820152600e60248201527f77726f6e6720636861696e2069640000000000000000000000000000000000006044820152606401610944565b600061567962ffffff19861660046001614910565b9050600163ffffffff8216108015906156995750600263ffffffff821611155b61570b5760405162461bcd60e51b815260206004820152602760248201527f756e737570706f72746564207361742b2076657273696f6e20696e206274632060448201527f7374616b696e67000000000000000000000000000000000000000000000000006064820152608401610944565b61571c62ffffff198616601b615365565b915061572f62ffffff1986166007615365565b925063ffffffff8116600214156157545761575162ffffff198616602f613531565b93505b509193909250565b805160009061576d57506000919050565b6020820151805160001a9060c082101561578b575060009392505050565b5060019392505050565b80516000906157a657506000919050565b6000806157b68460200151615818565b84602001516157c59190616797565b90506000846000015185602001516157dd9190616797565b90505b8082101561580f576157f182615899565b6157fb9083616797565b915082615807816169ad565b9350506157e0565b50909392505050565b8051600090811a60808110156158315750600092915050565b60b881108061584c575060c0811080159061584c575060f881105b1561585a5750600192915050565b60c08110156158875761586f600160b8616943565b61587c9060ff1682616903565b614544906001616797565b61586f600160f8616943565b50919050565b80516000908190811a60808110156158b45760019150613671565b60b88110156158da576158c8608082616903565b6158d3906001616797565b9150613671565b60c081101561595557600060b78203600186019550806020036101000a8651049150600181018201935050808310156135c05760405162461bcd60e51b815260206004820152601160248201527f6164646974696f6e206f766572666c6f770000000000000000000000000000006044820152606401610944565b60f8811015615969576158c860c082616903565b600060f78203600186019550806020036101000a86510491506001810182019350508083101561104e5760405162461bcd60e51b815260206004820152601160248201527f6164646974696f6e206f766572666c6f770000000000000000000000000000006044820152606401610944565b6000806159e88385616797565b90506040518111156159f8575060005b80615a0a5762ffffff19915050614544565b5050606092831b9190911790911b1760181b90565b6000816005615a2d81613683565b506000615a3b856024613531565b90508067ffffffffffffffff16615a51826149c0565b60ff16615a5e9190616797565b615a69906024616797565b6143eb906004616797565b6000615a8e8260181c6bffffffffffffffffffffffff1690565b615aa68360781c6bffffffffffffffffffffffff1690565b615ab09190616800565b6bffffffffffffffffffffffff1692915050565b600081600e615ad281613683565b506000615ae0856008613531565b90508067ffffffffffffffff16615af6826149c0565b60ff16615b039190616797565b6143eb906008616797565b6000615b2060048360ff16901c615d49565b60ff1661ffff919091161760081b615b3782615d49565b60ff1617919050565b600060ff8211156145c75760405162461bcd60e51b815260206004820152602560248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201527f20626974730000000000000000000000000000000000000000000000000000006064820152608401610944565b60606000615bc686614864565b9150506000615bd486614864565b9150506000615be286614864565b9150506000615bf086614864565b604080517f54797065644d656d566965772f696e646578202d204f76657272616e2074686560208201527f20766965772e20536c6963652069732061742030780000000000000000000000818301527fffffffffffff000000000000000000000000000000000000000000000000000060d098891b811660558301527f2077697468206c656e6774682030780000000000000000000000000000000000605b830181905297891b8116606a8301527f2e20417474656d7074656420746f20696e646578206174206f6666736574203060708301527f7800000000000000000000000000000000000000000000000000000000000000609083015295881b861660918201526097810196909652951b90921660a684015250507f2e0000000000000000000000000000000000000000000000000000000000000060ac8201528151808203608d01815260ad90910190915295945050505050565b600060f08083179060ff82161415615d645750603092915050565b8060ff1660f11415615d795750603192915050565b8060ff1660f21415615d8e5750603292915050565b8060ff1660f31415615da35750603392915050565b8060ff1660f41415615db85750603492915050565b8060ff1660f51415615dcd5750603592915050565b8060ff1660f61415615de25750603692915050565b8060ff1660f71415615df75750603792915050565b8060ff1660f81415615e0c5750603892915050565b8060ff1660f91415615e215750603992915050565b8060ff1660fa1415615e365750606192915050565b8060ff1660fb1415615e4b5750606292915050565b8060ff1660fc1415615e605750606392915050565b8060ff1660fd1415615e755750606492915050565b8060ff1660fe1415615e8a5750606592915050565b8060ff1660ff14156158935750606692915050565b5080546000825590600052602060002090810190615ebd9190615ec0565b50565b5b808211156145c75760008155600101615ec1565b803573ffffffffffffffffffffffffffffffffffffffff81168114614a1c57600080fd5b60008083601f840112615f0a578182fd5b50813567ffffffffffffffff811115615f21578182fd5b6020830191508360208260051b8501011115614fad57600080fd5b600082601f830112615f4c578081fd5b8135602067ffffffffffffffff821115615f6857615f686169de565b8160051b615f778282016166f2565b838152828101908684018388018501891015615f91578687fd5b8693505b85841015615fb3578035835260019390930192918401918401615f95565b50979650505050505050565b60008083601f840112615fd0578182fd5b50813567ffffffffffffffff811115615fe7578182fd5b602083019150836020828501011115614fad57600080fd5b803563ffffffff81168114614a1c57600080fd5b600060208284031215616024578081fd5b61454482615ed5565b6000806040838503121561603f578081fd5b61604883615ed5565b946020939093013593505050565b60008060006060848603121561606a578081fd5b61607384615ed5565b95602085013595506040909401359392505050565b6000806000806080858703121561609d578081fd5b6160a685615ed5565b9350602085013592506040850135915060608501356160c4816169f4565b939692955090935050565b600080602083850312156160e1578182fd5b823567ffffffffffffffff8111156160f7578283fd5b61610385828601615ef9565b90969095509350505050565b60008060008060408587031215616124578384fd5b843567ffffffffffffffff8082111561613b578586fd5b61614788838901615ef9565b9096509450602087013591508082111561615f578384fd5b5061616c87828801615ef9565b95989497509550505050565b60008060006040848603121561618c578283fd5b833567ffffffffffffffff8111156161a2578384fd5b6161ae86828701615ef9565b909790965060209590950135949350505050565b6000602082840312156161d3578081fd5b8151614544816169f4565b600080604083850312156161f0578182fd5b82516161fb816169f4565b602084015190925067ffffffffffffffff81168114616218578182fd5b809150509250929050565b600060208284031215616234578081fd5b5035919050565b60006020828403121561624c578081fd5b5051919050565b60008060408385031215616265578182fd5b8235915061627560208401615ed5565b90509250929050565b600080600080600060808688031215616295578283fd5b853567ffffffffffffffff808211156162ac578485fd5b6162b889838a01615fbf565b90975095508591506162cc60208901615fff565b945060408801359150808211156162e1578283fd5b506162ee88828901615f3c565b95989497509295606001359392505050565b60008060008060008060a08789031215616318578384fd5b863567ffffffffffffffff8082111561632f578586fd5b61633b8a838b01615fbf565b90985096506020915061634f898301615fff565b9550604089013581811115616362578384fd5b61636e8b828c01615f3c565b95505060608901359350608089013581811115616389578384fd5b8901601f81018b13616399578384fd5b8035828111156163ab576163ab6169de565b6163bd84601f19601f840116016166f2565b92508083528b848284010111156163d2578485fd5b8084830185850137820190920192909252509497939650919450929091565b60008060008060408587031215616406578182fd5b843567ffffffffffffffff8082111561641d578384fd5b61642988838901615fbf565b90965094506020870135915080821115616441578384fd5b5061616c87828801615fbf565b60008060408385031215616460578182fd5b505080516020909101519092909150565b6000815180845260208085019450808401835b838110156164a057815187529582019590820190600101616484565b509495945050505050565b8183528181602085013750600080602083850101526020601f19601f840116840101905092915050565b600081518084526164ed816020860160208601616966565b601f01601f19169290920160200192915050565b60008251616513818460208701616966565b9190910192915050565b6020815260006145446020830184616471565b602080825282518282018190526000919060409081850190868401855b82811015616582578151805167ffffffffffffffff16855286015163ffffffff1686850152928401929085019060010161654d565b5091979650505050505050565b6040815260006165a26040830185616471565b828103602084810191909152845180835285820192820190845b818110156165d8578451835293830193918301916001016165bc565b5090979650505050505050565b858152600063ffffffff808716602084015280861660408401525060a0606083015261661460a0830185616471565b90508260808301529695505050505050565b60808152600061663960808301876164d5565b63ffffffff9590951660208301525067ffffffffffffffff929092166040830152606090910152919050565b6020815260006145416020830184866164ab565b60408152600061668d6040830186886164ab565b82810360208401526166a08185876164ab565b979650505050505050565b6080815260006166bf6080830187896164ab565b60ff95909516602083015250604081019290925260609091015292915050565b60208152600061454460208301846164d5565b604051601f8201601f1916810167ffffffffffffffff8111828210171561671b5761671b6169de565b604052919050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561675d5761675d6169c8565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615616791576167916169c8565b50500190565b600082198211156167aa576167aa6169c8565b500190565b600067ffffffffffffffff8083168185168083038211156167d2576167d26169c8565b01949350505050565b600060ff821660ff84168060ff038211156167f8576167f86169c8565b019392505050565b60006bffffffffffffffffffffffff8083168185168083038211156167d2576167d26169c8565b60008261684257634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615616861576168616169c8565b500290565b600060ff821660ff84168160ff0481118215151615616887576168876169c8565b029392505050565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156168c9576168c96169c8565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156168fd576168fd6169c8565b50500390565b600082821015616915576169156169c8565b500390565b600067ffffffffffffffff8381169083168181101561693b5761693b6169c8565b039392505050565b600060ff821660ff84168082101561695d5761695d6169c8565b90039392505050565b60005b83811015616981578181015183820152602001616969565b83811115616990576000848401525b50505050565b6000816169a5576169a56169c8565b506000190190565b60006000198214156169c1576169c16169c8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114615ebd57600080fdfea26469706673582212201f6c3ae18a9a6edf4741c6e17dc282772de15d3983c729bef872be93e8eeee3264736f6c63430008040033 \ No newline at end of file +608060405234801561001057600080fd5b50600436106102de5760003560e01c80637a018cdf11610186578063b1171724116100e3578063cb57748011610097578063e1c7392a11610071578063e1c7392a1461075b578063e8beb1c014610763578063f9a2bbc71461078e57600080fd5b8063cb5774801461071e578063d72b08c614610731578063dc927faf1461075257600080fd5b8063b77ea2d7116100c8578063b77ea2d7146106db578063c3584254146106f0578063c81b16621461071557600080fd5b8063b1171724146106c9578063b3d676f3146106d257600080fd5b80639dc092621161013a578063a78abc161161011f578063a78abc16146106a0578063aa82dce1146106ad578063ac431751146106b657600080fd5b80639dc0926214610684578063a6d26d471461068d57600080fd5b806383d443391161016b57806383d44339146105ab57806385e137d3146105f5578063981c27ea1461067157600080fd5b80637a018cdf146104a3578063822b096e1461059857600080fd5b80633be932d21161023f5780635d25e51d116101f3578063773b807e116101cd578063773b807e14610474578063783028a91461048757806379ce9fac1461049057600080fd5b80635d25e51d146104415780635efc83de1461044a57806375b10c711461045d57600080fd5b806343756e5c1161022457806343756e5c146103f75780634b22fc621461040057806350fe74081461043857600080fd5b80633be932d2146103d15780633d1f0974146103e457600080fd5b806320c94d98116102965780632a5d69b21161027b5780632a5d69b2146103aa5780632d7e3eda146103b35780633b768160146103c857600080fd5b806320c94d981461036557806325ee13e2146103a157600080fd5b80630990e909116102c75780630990e9091461031f5780631146feb81461033f57806314c1e1f71461035c57600080fd5b8063042295e1146102e357806304e9e3a414610316575b600080fd5b6102ec61101781565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102ec61100781565b61033261032d36600461600f565b610797565b60405161030d9190616519565b600c5461034c9060ff1681565b604051901515815260200161030d565b6102ec61100481565b61038c61037336600461600f565b6007602052600090815260409020805460019091015482565b6040805192835260208301919091520161030d565b6102ec61100581565b6102ec61101281565b6103c66103c136600461627a565b610810565b005b6102ec61101481565b61038c6103df366004616084565b610bd2565b6103326103f23660046160cb565b610f49565b6102ec61100181565b61041361040e36600461621f565b611066565b6040805167ffffffffffffffff909316835263ffffffff90911660208301520161030d565b6102ec61101681565b6102ec61101181565b61033261045836600461600f565b6110a4565b61046660045481565b60405190815260200161030d565b6103c6610482366004616174565b61111e565b6102ec61100881565b6103c661049e36600461624f565b611221565b6105516104b136600461621f565b60026020526000908152604090205467ffffffffffffffff8082169163ffffffff6801000000000000000082048116926c0100000000000000000000000083041691740100000000000000000000000000000000000000008104821691780100000000000000000000000000000000000000000000000082048116917c010000000000000000000000000000000000000000000000000000000090041686565b6040805167ffffffffffffffff978816815263ffffffff968716602082015296909416938601939093529083166060850152821660808401521660a082015260c00161030d565b6103c66105a636600461610b565b611794565b6105da6105b936600461600f565b60086020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161030d565b61063e61060336600461621f565b60056020526000908152604090208054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff918216929091169083565b6040805173ffffffffffffffffffffffffffffffffffffffff94851681529390921660208401529082015260600161030d565b6103c661067f3660046162fc565b611a18565b6102ec61100681565b61046661069b36600461624f565b61219d565b60005461034c9060ff1681565b6102ec61101081565b6103c66106c43660046163ed565b6121d7565b6102ec61100981565b6102ec61101381565b6106e3612b7a565b60405161030d919061652c565b6009546107009063ffffffff1681565b60405163ffffffff909116815260200161030d565b6102ec61100281565b6103c661072c36600461621f565b612bf9565b61074461073f366004616052565b612e1d565b60405161030d92919061658b565b6102ec61100381565b6103c661305c565b610466610771366004616029565b600360209081526000928352604080842090915290825290205481565b6102ec61100081565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602090815260409182902080548351818402810184019094528084526060939283018282801561080457602002820191906000526020600020905b8154815260200190600101908083116107f0575b50505050509050919050565b61081861318a565b600061085986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506131e492505050565b6009546040517fedade1890000000000000000000000000000000000000000000000000000000081529192506000916110039163edade189916108ad9186918a9163ffffffff16908a908a906004016165e1565b60206040518083038186803b1580156108c557600080fd5b505afa1580156108d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fd91906161be565b9050806109515760405162461bcd60e51b815260206004820152601660248201527f6274632074782069736e277420636f6e6669726d65640000000000000000000060448201526064015b60405180910390fd5b600061099288888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132b292505050565b509092506109aa91505062ffffff1982166006613437565b5060006109bd62ffffff19831682613539565b67ffffffffffffffff16905060008080805b84811015610b6d576109e762ffffff19871682613680565b6000828152600260205260409020805491955091935067ffffffffffffffff1615801590610a2a5750805463ffffffff8581166801000000000000000090920416145b15610b5c5780547801000000000000000000000000000000000000000000000000900463ffffffff1615610ac65760405162461bcd60e51b815260206004820152602260248201527f627463206f757470757420697320616c726561647920756e64656c656761746560448201527f642e0000000000000000000000000000000000000000000000000000000000006064820152608401610948565b80547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff8e1602178155610b18856169a9565b94508363ffffffff16837f11e4685d914d513c078f2520ce18170550bf421495a0b11d9a2e82b0ac02ac328b604051610b5391815260200190565b60405180910390a35b50610b66816169a9565b90506109cf565b5082610bbb5760405162461bcd60e51b815260206004820152601660248201527f6e6f2062746320747820756e64656c6567617465642e000000000000000000006044820152606401610948565b50505050505050610bcb60018055565b5050505050565b6000803361101314610c4c5760405162461bcd60e51b815260206004820152602d60248201527f746865206d73672073656e646572206d75737420626520626974636f696e206160448201527f67656e7420636f6e7472616374000000000000000000000000000000000000006064820152608401610948565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260066020526040812080548291829182905b8015610f3a5782610c8c6001836168ff565b81548110610caa57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549150610cda828c60056000868152602001908152602001600020600201548d8d6136d5565b9d5090975090955093508415610dc2576000828152600260205260409020547c0100000000000000000000000000000000000000000000000000000000900463ffffffff168015610dc0576040517f2ab66e7000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526024810187905261101790632ab66e7090604401602060405180830381600087803b158015610d8557600080fd5b505af1158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbd9190616237565b95505b505b610dcc8589616793565b9750610dd8848861671f565b96508515610f285760008281526005602052604080822060010154905173ffffffffffffffffffffffffffffffffffffffff9091169184917fab9cd399cf9f01321f73b32d2b1e2c6034d379277171bcd887b269416c0ef3bb9190a3600082815260056020526040812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116825560018201805490911690556002015582548114610ef35782548390610e91906001906168ff565b81548110610eaf57634e487b7160e01b600052603260045260246000fd5b906000526020600020015483600183610ec891906168ff565b81548110610ee657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001555b82805480610f1157634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590555b80610f3281616992565b915050610c7a565b50505050505094509492505050565b6060818067ffffffffffffffff811115610f7357634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610f9c578160200160208202803683370190505b50915060005b8181101561105e5760076000868684818110610fce57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610fe3919061600f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015483828151811061104157634e487b7160e01b600052603260045260246000fd5b602090810291909101015280611056816169a9565b915050610fa2565b505092915050565b600b818154811061107657600080fd5b60009182526020909120015467ffffffffffffffff8116915068010000000000000000900463ffffffff1682565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602090815260409182902060020180548351818402810184019094528084526060939283018282801561080457602002820191906000526020600020908154815260200190600101908083116107f05750505050509050919050565b33611013146111955760405162461bcd60e51b815260206004820152602d60248201527f746865206d73672073656e646572206d75737420626520626974636f696e206160448201527f67656e7420636f6e7472616374000000000000000000000000000000000000006064820152608401610948565b816000805b82811015611217578585828181106111c257634e487b7160e01b600052603260045260246000fd5b90506020020160208101906111d7919061600f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604090206001810154905591508061120f816169a9565b91505061119a565b5050506004555050565b61122961318a565b60008281526002602090815260408083206005909252909120815467ffffffffffffffff168061129b5760405162461bcd60e51b815260206004820152601060248201527f627463207478206e6f7420666f756e64000000000000000000000000000000006044820152606401610948565b600182015473ffffffffffffffffffffffffffffffffffffffff16331461132a5760405162461bcd60e51b815260206004820152602560248201527f6e6f74207468652064656c656761746f72206f6620746869732062746320726560448201527f63656970740000000000000000000000000000000000000000000000000000006064820152608401610948565b815473ffffffffffffffffffffffffffffffffffffffff9081169085168114156113bc5760405162461bcd60e51b815260206004820152602660248201527f63616e206e6f74207472616e7366657220746f207468652073616d652076616c60448201527f696461746f7200000000000000000000000000000000000000000000000000006064820152608401610948565b83546000906113ed90620151809074010000000000000000000000000000000000000000900463ffffffff16616823565b905060045460016113fe9190616793565b811161144c5760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e74206c6f636b696e6720726f756e647300000000006044820152606401610948565b6040517fc666907b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526110059063c666907b9060240160206040518083038186803b1580156114b357600080fd5b505afa1580156114c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114eb91906161be565b611539576040517f97f6800700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152602401610948565b60018401546040517f451c20a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526110109063451c20a590602401600060405180830381600087803b1580156115a857600080fd5b505af11580156115bc573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120600181018054919267ffffffffffffffff8716926116049084906168ff565b90915550506000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684526001019091528120805467ffffffffffffffff871692906116559084906168ff565b909155505084547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816178555600454600286015585546116cc90869074010000000000000000000000000000000000000000900463ffffffff1686613ae0565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600760205260408120600181018054919267ffffffffffffffff881692611710908490616793565b909155505086546040805173ffffffffffffffffffffffffffffffffffffffff87811682528b166020820152338183015267ffffffffffffffff9092166060830152518a917f131a10ab89910bd3a30ed9bbf71f1bce939e3d654a7cd7474ca5887eab499c82919081900360800190a25050505050505061179060018055565b5050565b336110131461180b5760405162461bcd60e51b815260206004820152602d60248201527f746865206d73672073656e646572206d75737420626520626974636f696e206160448201527f67656e7420636f6e7472616374000000000000000000000000000000000000006064820152608401610948565b82600080805b83811015611a0e5785858281811061183957634e487b7160e01b600052603260045260246000fd5b905060200201356000141561184d576119fc565b60008089898481811061187057634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611885919061600f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602090815260408083206007909252909120805492965090916118c957505050506119fc565b60028101549650861561192657600281016118e56001896168ff565b8154811061190357634e487b7160e01b600052603260045260246000fd5b906000526020600020015492508160008481526020019081526020016000205493505b80546305f5e1008b8b8881811061194d57634e487b7160e01b600052603260045260246000fd5b9050602002013561195e9190616843565b6119689190616823565b6119729085616793565b6004805460009081526020859052604090209190915554611994846001616793565b14156119db57600454600282016119ac60018a6168ff565b815481106119ca57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001556119f7565b6004546002820180546001810182556000918252602090912001555b505050505b80611a06816169a9565b915050611811565b5050505050505050565b611a2061318a565b80517f0400000000000000000000000000000000000000000000000000000000000000908290600090611a6357634e487b7160e01b600052603260045260246000fd5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016148015611b00575080517fb1000000000000000000000000000000000000000000000000000000000000009082906005908110611ad757634e487b7160e01b600052603260045260246000fd5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b611b4c5760405162461bcd60e51b815260206004820152601960248201527f6e6f7420612076616c69642072656465656d20736372697074000000000000006044820152606401610948565b6000611b8d87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506131e492505050565b600081815260026020526040902080549192509067ffffffffffffffff1615611bf85760405162461bcd60e51b815260206004820152601c60248201527f62746320747820697320616c72656164792064656c6567617465642e000000006044820152606401610948565b6000611c0384613bd7565b6009546040517fab6d0e5100000000000000000000000000000000000000000000000000000000815291925060009182916110039163ab6d0e5191611c5b9189918e9163ffffffff909116908e908e906004016165e1565b604080518083038186803b158015611c7257600080fd5b505afa158015611c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611caa91906161da565b9250905080611cfb5760405162461bcd60e51b815260206004820152601660248201527f6274632074782069736e277420636f6e6669726d6564000000000000000000006044820152606401610948565b6000611d106201518063ffffffff8616616823565b90506004546001611d219190616793565b8111611d6f5760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e74206c6f636b696e6720726f756e647300000000006044820152606401610948565b50506000600560008681526020019081526020016000209050600080600080611dcd8f8f8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132b292505050565b5092505050600080611ddf838d613d2d565b6040517f541d5548000000000000000000000000000000000000000000000000000000008152336004820152919a50985092965090935091506110049063541d55489060240160206040518083038186803b158015611e3d57600080fd5b505afa158015611e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7591906161be565b80611e9557503373ffffffffffffffffffffffffffffffffffffffff8716145b611f075760405162461bcd60e51b815260206004820152603860248201527f6f6e6c792064656c656761746f72206f722072656c617965722063616e20737560448201527f626d69742074686520425443207472616e73616374696f6e00000000000000006064820152608401610948565b6040517f451c20a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526110109063451c20a590602401600060405180830381600087803b158015611f7057600080fd5b505af1158015611f84573d6000803e3d6000fd5b50505050888a60000160146101000a81548163ffffffff021916908363ffffffff160217905550878a600001600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550838a60000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550818a60000160086101000a81548163ffffffff021916908363ffffffff160217905550808a600001601c6101000a81548163ffffffff021916908363ffffffff1602179055508573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168c7f3391934a441f8a4f5bd3ffdc8b4c59b386061114e16b83d51cc73b1e41c0c0a08f868960006040516120ac9493929190616622565b60405180910390a450505073ffffffffffffffffffffffffffffffffffffffff8084166000908152600660209081526040808320805460018181018355918552838520018d9055938616835260079091528120909101805467ffffffffffffffff8416929061211c908490616793565b909155505060018401805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255855491841691161784556004546002850155612184848783613ae0565b505050505050505061219560018055565b505050505050565b6000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff851684526001019091529020545b92915050565b60005460ff166122295760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610948565b33611006146122a05760405162461bcd60e51b815260206004820152602a60248201527f746865206d73672073656e646572206d75737420626520676f7665726e616e6360448201527f6520636f6e7472616374000000000000000000000000000000000000000000006064820152608401610948565b61231484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600681527f6772616465730000000000000000000000000000000000000000000000000000602082015291506140e59050565b1561297c57600b54604080516020601f85018190048102820181019092528381526000916123659161236091879087908190840183828082843760009201919091525061413e92505050565b61416b565b8051909150806123a55786866040517fad23613c000000000000000000000000000000000000000000000000000000008152600401610948929190616661565b805b8381101561241a57600b8054806123ce57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180547fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016905501905580612412816169a9565b9150506123a7565b5060008060005b8381101561273457600061245b86838151811061244e57634e487b7160e01b600052603260045260246000fd5b602002602001015161416b565b905061248e8160008151811061248157634e487b7160e01b600052603260045260246000fd5b602002602001015161429d565b9350610fa0841115612512576040517f808861f900000000000000000000000000000000000000000000000000000000815260806004820152600c60848201527f6c6f636b4475726174696f6e000000000000000000000000000000000000000060a48201526024810184905260006044820152610fa0606482015260c401610948565b6125368160018151811061248157634e487b7160e01b600052603260045260246000fd5b9250821580612546575061271083115b156125c3576040517f808861f900000000000000000000000000000000000000000000000000000000815260806004820152600a60848201527f70657263656e746167650000000000000000000000000000000000000000000060a48201526024810184905260016044820152612710606482015260c401610948565b6125d06201518085616843565b935086821061267c576040805180820190915267ffffffffffffffff808616825263ffffffff80861660208401908152600b805460018101825560009190915293517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99094018054915190921668010000000000000000027fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009091169390921692909217179055612721565b60405180604001604052808567ffffffffffffffff1681526020018463ffffffff16815250600b83815481106126c257634e487b7160e01b600052603260045260246000fd5b6000918252602091829020835191018054939092015163ffffffff1668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090931667ffffffffffffffff909116179190911790555b508061272c816169a9565b915050612421565b5060015b838110156128ec57600b818154811061276157634e487b7160e01b600052603260045260246000fd5b60009182526020909120015467ffffffffffffffff16600b6127846001846168ff565b815481106127a257634e487b7160e01b600052603260045260246000fd5b60009182526020909120015467ffffffffffffffff16106128055760405162461bcd60e51b815260206004820152601560248201527f6c6f636b4475726174696f6e206469736f7264657200000000000000000000006044820152606401610948565b600b818154811061282657634e487b7160e01b600052603260045260246000fd5b60009182526020909120015468010000000000000000900463ffffffff16600b6128516001846168ff565b8154811061286f57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015468010000000000000000900463ffffffff16106128da5760405162461bcd60e51b815260206004820152601360248201527f70657263656e74616765206469736f72646572000000000000000000000000006044820152606401610948565b806128e4816169a9565b915050612738565b50600b60008154811061290f57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015467ffffffffffffffff16156129725760405162461bcd60e51b815260206004820181905260248201527f6c6f77657374206c6f636b4475726174696f6e206d757374206265207a65726f6044820152606401610948565b5050505050612b37565b6129f084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81527f6772616465416374697665000000000000000000000000000000000000000000602082015291506140e59050565b15612b015760018114612a335783836040517fad23613c000000000000000000000000000000000000000000000000000000008152600401610948929190616661565b6000612a79600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061436a9050565b905060018160ff161115612ac557848482600060016040517f808861f90000000000000000000000000000000000000000000000000000000081526004016109489594939291906166a7565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600160ff90931692909214919091179055612b37565b83836040517f64b4f604000000000000000000000000000000000000000000000000000000008152600401610948929190616661565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612b6c9493929190616675565b60405180910390a150505050565b6060600b805480602002602001604051908101604052809291908181526020016000905b82821015612bf0576000848152602090819020604080518082019091529084015467ffffffffffffffff8116825268010000000000000000900463ffffffff1681830152825260019092019101612b9e565b50505050905090565b3361101014612c705760405162461bcd60e51b815260206004820152602960248201527f746865206d73672073656e646572206d757374206265207374616b652068756260448201527f20636f6e747261637400000000000000000000000000000000000000000000006064820152608401610948565b6000806004546001612c829190616793565b90505b828111612e18576000818152600a60205260409020805480612ca8575050612e08565b805b8015612de95782612cbc6001836168ff565b81548110612cda57634e487b7160e01b600052603260045260246000fd5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526001868101909252604090922054919650612d1b916168ff565b73ffffffffffffffffffffffffffffffffffffffff861660009081526007602052604081206001018054909190612d539084906168ff565b90915550508254839080612d7757634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff871682526001850190526040812055612de281616992565b9050612caa565b506000838152600a6020526040812090612e038282615e9b565b505050505b612e11816169a9565b9050612c85565b505050565b6060803361101314612e975760405162461bcd60e51b815260206004820152602d60248201527f746865206d73672073656e646572206d75737420626520626974636f696e206160448201527f67656e7420636f6e7472616374000000000000000000000000000000000000006064820152608401610948565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260066020526040902080548067ffffffffffffffff811115612ee557634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612f0e578160200160208202803683370190505b5093508067ffffffffffffffff811115612f3857634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612f61578160200160208202803683370190505b509250600080825b801561304f5784612f7b6001836168ff565b81548110612f9957634e487b7160e01b600052603260045260246000fd5b90600052602060002001549150612fca828a60056000868152602001908152602001600020600201548b60016136d5565b8a612fd66001876168ff565b81518110612ff457634e487b7160e01b600052603260045260246000fd5b602002602001018a60018761300991906168ff565b8151811061302757634e487b7160e01b600052603260045260246000fd5b602090810291909101019290925292905290995092508061304781616992565b915050612f69565b5050505050935093915050565b60005460ff16156130af5760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e6974000000000000006044820152606401610948565b61100573ffffffffffffffffffffffffffffffffffffffff166373fa03ed6040518163ffffffff1660e01b815260040160206040518083038186803b1580156130f757600080fd5b505afa15801561310b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312f9190616237565b600455600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000166006179055600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600260015414156131dd5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610948565b6002600155565b6000806002836040516131f791906164fd565b602060405180830381855afa158015613214573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906132379190616237565b9050600060028260405160200161325091815260200190565b60408051601f198184030181529082905261326a916164fd565b602060405180830381855afa158015613287573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906132aa9190616237565b949350505050565b6000808080806132c286826143d0565b90506132df6132da62ffffff198316600060046143f4565b61454b565b94506004600061331361330483601886901c6bffffffffffffffffffffffff166168ff565b62ffffff1985169060006145cb565b9050600061332082614609565b9050613339838260065b62ffffff1988169291906146e8565b96506133458184616793565b925061337561336684601887901c6bffffffffffffffffffffffff166168ff565b62ffffff1986169060006145cb565b915060006133828361476c565b905061339b8482600f5b62ffffff1989169291906146e8565b96506133a78185616793565b93506133be6132da62ffffff1987168660046143f4565b9550601885901c6bffffffffffffffffffffffff166133de856004616793565b1461342b5760405162461bcd60e51b815260206004820152601960248201527f426974636f696e48656c7065723a20696e76616c6964207478000000000000006044820152606401610948565b50505050509193509193565b60006134438383614841565b6135325760006134626134568560d81c90565b64ffffffffff16614864565b91505060006134778464ffffffffff16614864565b6040517f5479706520617373657274696f6e206661696c65642e20476f7420307800000060208201527fffffffffffffffffffff0000000000000000000000000000000000000000000060b086811b8216603d8401527f2e20457870656374656420307800000000000000000000000000000000000000604784015283901b16605482015290925060009150605e015b60405160208183030381529060405290508060405162461bcd60e51b815260040161094891906166db565b5090919050565b60008061354e62ffffff198516846001614910565b905060fc81116135695761356181614940565b9150506121d1565b8060fd14156135cf57613597613592613583856001616793565b62ffffff1987169060026143f4565b614940565b91506135a2826149c0565b60ff166003146135ca576135c86135c362ffffff19861685600360006146e8565b614a21565b505b613679565b8060fe1415613624576135f86135926135e9856001616793565b62ffffff1987169060046143f4565b9150613603826149c0565b60ff166005146135ca576135c86135c362ffffff19861685600560006146e8565b8060ff14156136795761364d61359261363e856001616793565b62ffffff1987169060086143f4565b9150613658826149c0565b60ff166009146136795761105e6135c362ffffff19861685600960006146e8565b5092915050565b600080836006613698815b62ffffff19841690613437565b5060006136a58787614abe565b905060006136b282614bfe565b90506136bd81614c25565b95506136c881614c47565b9450505050509250929050565b6000808080866137275760405162461bcd60e51b815260206004820152601760248201527f696e76616c6964206465706f73697420726563656970740000000000000000006044820152606401610948565b60045486106137785760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420736574746c6520726f756e640000000000000000000000006044820152606401610948565b60006137848a88614c6c565b9097509350889150600080888a1015613ad15760008c81526002602090815260408083206005909252909120815481546305f5e1009167ffffffffffffffff16906137e59073ffffffffffffffffffffffffffffffffffffffff168f614cd1565b83546138079073ffffffffffffffffffffffffffffffffffffffff168f614cd1565b61381191906168ff565b61381b9190616843565b6138259190616823565b8254600283018d905590995067ffffffffffffffff1694508815613ace57600c5460009060ff1680156138595750600b5415155b156139d75782546000906138a5906c01000000000000000000000000810467ffffffffffffffff169074010000000000000000000000000000000000000000900463ffffffff16616916565b9050600b6000815481106138c957634e487b7160e01b600052603260045260246000fd5b6000918252602082200154600b546801000000000000000090910463ffffffff1697506138f8906001906168ff565b90505b801561399a57600b818154811061392257634e487b7160e01b600052603260045260246000fd5b60009182526020909120015467ffffffffffffffff9081169083161061398857600b818154811061396357634e487b7160e01b600052603260045260246000fd5b60009182526020909120015468010000000000000000900463ffffffff16965061399a565b8061399281616992565b9150506138fb565b506127106139a8878d616843565b6139b29190616823565b91506139bd8b614e3c565b6139c683614e3c565b6139d0919061688b565b9850819a50505b6139e18e87614ed4565b90975093506127106139f3858c616843565b6139fd9190616823565b9050613a088a614e3c565b613a1182614e3c565b613a1b919061688b565b613a25908961671f565b97508099508a15613a8057604080518b81528a15156020820152908101869052606081018590528f907fb2f336888bf47e4557c93c9bc79451609a9792d47be2e38a18d2d1f3b2d383af9060800160405180910390a2613acc565b604080518b81528a15156020820152908101869052606081018590528f907f203216252e638668b95f2c8ccbc1d112139eed9fada5ec54fbd0174e12ff35f09060800160405180910390a25b505b50505b50505095509550955095915050565b6000613af56201518063ffffffff8516616823565b6000818152600a60209081526040808320885473ffffffffffffffffffffffffffffffffffffffff16845260018101909252909120549192509080613b905750845481546001818101845560008481526020902090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909316929092179091555b613ba467ffffffffffffffff851682616793565b955473ffffffffffffffffffffffffffffffffffffffff1660009081526001909201602052506040902093909355505050565b6021810151600090613d208160008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b63ffffffff169392505050565b600080808080613d4462ffffff198816600f613437565b50600080808080613d5b62ffffff198d1682613539565b67ffffffffffffffff1690506000805b8281101561403057613d8362ffffff198f1682614fb0565b9650613d9462ffffff1988166150c3565b9550613da562ffffff19881661510d565b9450613db662ffffff198616615158565b935062ffffff198085161415614009576017601887901c6bffffffffffffffffffffffff16148015613dfa5750613df662ffffff19871660006001614910565b60a9145b8015613e175750613e1362ffffff198716600180614910565b6014145b8015613e355750613e3162ffffff19871660166001614910565b6087145b8015613f295750600360028e604051613e4e91906164fd565b602060405180830381855afa158015613e6b573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190613e8e9190616237565b604051602001613ea091815260200190565b60408051601f1981840301815290829052613eba916164fd565b602060405180830381855afa158015613ed7573d6000803e3d6000fd5b50506040515160601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169050613f1562ffffff1988166002615361565b60601b6bffffffffffffffffffffffff1916145b80613fea57506022601887901c6bffffffffffffffffffffffff16148015613f615750613f5f62ffffff19871660006001614910565b155b8015613f7e5750613f7a62ffffff198716600180614910565b6020145b8015613fea575060028d604051613f9591906164fd565b602060405180830381855afa158015613fb2573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190613fd59190616237565b613fe862ffffff1988166002602061536f565b145b1561400457613ffe62ffffff19881661550c565b9b50809a505b61401e565b61401284615531565b919b5099509750600191505b80614028816169a9565b915050613d6b565b5067ffffffffffffffff8b166140885760405162461bcd60e51b815260206004820152601460248201527f7374616b65642076616c7565206973207a65726f0000000000000000000000006044820152606401610948565b806140d55760405162461bcd60e51b815260206004820152600b60248201527f6e6f206f7072657475726e0000000000000000000000000000000000000000006044820152606401610948565b5050505050509295509295909350565b6000816040516020016140f891906164fd565b604051602081830303815290604052805190602001208360405160200161411f91906164fd565b6040516020818303038152906040528051906020012014905092915050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b606061417682615758565b61417f57600080fd5b600061418a83615791565b905060008167ffffffffffffffff8111156141b557634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156141fa57816020015b60408051808201909152600080825260208201528152602001906001900390816141d35790505b509050600061420c8560200151615814565b856020015161421b9190616793565b90506000805b848110156142925761423283615895565b915060405180604001604052808381526020018481525084828151811061426957634e487b7160e01b600052603260045260246000fd5b602090810291909101015261427e8284616793565b92508061428a816169a9565b915050614221565b509195945050505050565b8051600090158015906142b257508151602110155b6142bb57600080fd5b60006142ca8360200151615814565b905080836000015110156143205760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f66667365740000000000006044820152606401610948565b82516000906143309083906168ff565b90506000808386602001516143459190616793565b905080519150602083101561436157826020036101000a820491505b50949350505050565b6000614377826001616793565b835110156143c75760405162461bcd60e51b815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610948565b50016001015190565b8151600090602084016143eb64ffffffffff851682846159d7565b95945050505050565b600061454161440485858561536f565b60008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b90505b9392505050565b600063ffffffff8211156145c75760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610948565b5090565b600061454184846145ea8760181c6bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff1661460291906168ff565b85856146e8565b6000601882901c6bffffffffffffffffffffffff1661462a57506000919050565b6000614637836000613539565b9050601883901c6bffffffffffffffffffffffff1667ffffffffffffffff8216614665575060009392505050565b6000614670836149c0565b60ff16905060005b8367ffffffffffffffff168110156143615782821061469d5750600095945050505050565b60006146bd6146ac84866168ff565b60055b62ffffff198a1691906145cb565b90506146c881615a1b565b6146d29084616793565b92505080806146e0906169a9565b915050614678565b6000806147038660781c6bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff16905061471c86615a70565b846147278784616793565b6147319190616793565b11156147445762ffffff199150506132aa565b61474e8582616793565b90506147628364ffffffffff1682866159d7565b9695505050505050565b6000601882901c6bffffffffffffffffffffffff1661478d57506000919050565b600061479a836000613539565b9050601883901c6bffffffffffffffffffffffff1667ffffffffffffffff82166147c8575060009392505050565b60006147d3836149c0565b60ff16905060005b8367ffffffffffffffff16811015614361578282106148005750600095945050505050565b600061481661480f84866168ff565b600e6146af565b905061482181615ac0565b61482b9084616793565b9250508080614839906169a9565b9150506147db565b60008164ffffffffff166148558460d81c90565b64ffffffffff16149392505050565b600080601f5b600f8160ff1611156148c2576000614883826008616862565b60ff1685901c905061489481615b0a565b61ffff16841793508160ff166010146148af57601084901b93505b506148bb60018261693f565b905061486a565b50600f5b60ff8160ff16101561490a5760ff600882021684901c6148e581615b0a565b61ffff16831792508160ff1660001461490057601083901b92505b50600019016148c6565b50915091565b600061491d82602061693f565b614928906008616862565b60ff1661493685858561536f565b901c949350505050565b600067ffffffffffffffff8211156145c75760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f34206269747300000000000000000000000000000000000000000000000000006064820152608401610948565b600060fc8267ffffffffffffffff16116149dc57506001919050565b61ffff8267ffffffffffffffff16116149f757506003919050565b63ffffffff8267ffffffffffffffff1611614a1457506005919050565b506009919050565b919050565b60606000614a5a614a5582614a47601887901c6bffffffffffffffffffffffff16615b3c565b62ffffff1987169190614910565b614864565b6040517f4e6f6e2d6d696e696d616c2076617220696e742e20476f74203078000000000060208201527fffffffffffffffffffffffffffffffffffff0000000000000000000000000000607083901b16603b82015290925060009150604d01613507565b6000826006614acc8161368b565b506000614ada866000613539565b67ffffffffffffffff169050601886901c6bffffffffffffffffffffffff16818610614b485760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e000000000000000000000000000000006044820152606401610948565b6000614b53836149c0565b60ff1690506000805b88811015614bab57614b82614b7184866168ff565b60055b62ffffff198d1691906145cb565b9150614b8d82615a1b565b614b979084616793565b9250614ba4600182616793565b9050614b5c565b50614bca614bb983856168ff565b60055b62ffffff198c1691906145cb565b90506000614bd782615a1b565b9050614bf0838260045b62ffffff198e169291906146e8565b9a9950505050505050505050565b6000816004614c0c8161368b565b50614c1b60006024600361332a565b92505b5050919050565b6000816003614c338161368b565b50614c1b62ffffff1985166000602061536f565b6000816003614c558161368b565b50614c1b6132da62ffffff198616602060046143f4565b60008281526002602052604081208054829190600190614cae90620151809074010000000000000000000000000000000000000000900463ffffffff16616823565b614cb891906168ff565b925083831115915081614cc9578392505b509250929050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602090815260408083208484529091529020548015614d0d576121d1565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260409020600281015480614d47576000925050506121d1565b614d526001826168ff565b90506000806000805b848411614ded576002614d6e8686616793565b614d789190616823565b9250856002018381548110614d9d57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905087811015614dc757905080614dc0836001616793565b9350614d5b565b82614ddb57600096505050505050506121d1565b614de66001846168ff565b9450614d5b565b8115614e305773ffffffffffffffffffffffffffffffffffffffff89166000908152600360209081526040808320858452909152808220548a8352912081905596505b50505050505092915050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156145c75760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401610948565b6000808080614ee38587616823565b6040517fe1e0485e000000000000000000000000000000000000000000000000000000008152600481018290529091506110139063e1e0485e90602401604080518083038186803b158015614f3757600080fd5b505afa158015614f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f6f919061644a565b90925090506000614f808683616843565b905080871115614f9b57614f9481886168ff565b9650614fa0565b600096505b50859350909150505b9250929050565b600082600f614fbe8161368b565b506000614fcc866000613539565b67ffffffffffffffff169050601886901c6bffffffffffffffffffffffff1681861061503a5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e0000000000000000000000000000006044820152606401610948565b6000615045836149c0565b60ff1690506000805b888110156150935761506a61506384866168ff565b600e614b74565b915061507582615ac0565b61507f9084616793565b925061508c600182616793565b905061504e565b506150a86150a183856168ff565b600e614bbc565b905060006150b582615ac0565b9050614bf08382600d614be1565b600081600d6150d18161368b565b5060006150df856008613539565b90506143eb6150ed826149c0565b6150f89060086167d7565b60ff1667ffffffffffffffff8316600761338c565b600081600d61511b8161368b565b506000615129856008613539565b90506143eb60088261513a846149c0565b60ff1661514791906167ab565b67ffffffffffffffff16600761338c565b60008160076151668161368b565b506000615174856000613539565b905061518862ffffff198616600180614910565b606a1415615357576151a362ffffff19861660026001614910565b604c141561528b5760006151c361359262ffffff19881660036001614910565b90506151d0600383616916565b67ffffffffffffffff168167ffffffffffffffff161480156151fd575060538267ffffffffffffffff1611155b80156152145750604f8267ffffffffffffffff1610155b6152605760405162461bcd60e51b815260206004820152601f60248201527f426974636f696e48656c7065723a20696e76616c6964206f7072657475726e006044820152606401610948565b615282600467ffffffffffffffff8316600c5b62ffffff198a169291906146e8565b94505050614c1e565b60006152a361359262ffffff19881660026001614910565b90506152b0600283616916565b67ffffffffffffffff168167ffffffffffffffff161480156152dd5750604d8267ffffffffffffffff1611155b80156152f4575060048267ffffffffffffffff1610155b6153405760405162461bcd60e51b815260206004820152601f60248201527f426974636f696e48656c7065723a20696e76616c6964206f7072657475726e006044820152606401610948565b615282600367ffffffffffffffff8316600c615273565b62ffffff196143eb565b600061454483836014614910565b600060ff821661538157506000614544565b6153998460181c6bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff166153b460ff841685616793565b111561542c576154136153d58560781c6bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff166153fb8660181c6bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff16858560ff16615bb5565b60405162461bcd60e51b815260040161094891906166db565b60208260ff1611156154a65760405162461bcd60e51b815260206004820152603a60248201527f54797065644d656d566965772f696e646578202d20417474656d70746564207460448201527f6f20696e646578206d6f7265207468616e2033322062797465730000000000006064820152608401610948565b6008820260006154c48660781c6bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff16905060007f800000000000000000000000000000000000000000000000000000000000000060001984011d91909501511695945050505050565b600081600d61551a8161368b565b50614c1b61359262ffffff198616600060086143f4565b600080806030601885901c6bffffffffffffffffffffffff1610156155985760405162461bcd60e51b815260206004820152601b60248201527f7061796c6f6164206c656e67746820697320746f6f20736d616c6c00000000006044820152606401610948565b635341542b6155b062ffffff19861660006004614910565b146155fd5760405162461bcd60e51b815260206004820152600b60248201527f77726f6e67206d616769630000000000000000000000000000000000000000006044820152606401610948565b61045a61561362ffffff19861660056002614910565b146156605760405162461bcd60e51b815260206004820152600e60248201527f77726f6e6720636861696e2069640000000000000000000000000000000000006044820152606401610948565b600061567562ffffff19861660046001614910565b9050600163ffffffff8216108015906156955750600263ffffffff821611155b6157075760405162461bcd60e51b815260206004820152602760248201527f756e737570706f72746564207361742b2076657273696f6e20696e206274632060448201527f7374616b696e67000000000000000000000000000000000000000000000000006064820152608401610948565b61571862ffffff198616601b615361565b915061572b62ffffff1986166007615361565b925063ffffffff8116600214156157505761574d62ffffff198616602f613539565b93505b509193909250565b805160009061576957506000919050565b6020820151805160001a9060c0821015615787575060009392505050565b5060019392505050565b80516000906157a257506000919050565b6000806157b28460200151615814565b84602001516157c19190616793565b90506000846000015185602001516157d99190616793565b90505b8082101561580b576157ed82615895565b6157f79083616793565b915082615803816169a9565b9350506157dc565b50909392505050565b8051600090811a608081101561582d5750600092915050565b60b8811080615848575060c08110801590615848575060f881105b156158565750600192915050565b60c08110156158835761586b600160b861693f565b6158789060ff16826168ff565b614544906001616793565b61586b600160f861693f565b50919050565b80516000908190811a60808110156158b05760019150613679565b60b88110156158d6576158c46080826168ff565b6158cf906001616793565b9150613679565b60c081101561595157600060b78203600186019550806020036101000a8651049150600181018201935050808310156135c85760405162461bcd60e51b815260206004820152601160248201527f6164646974696f6e206f766572666c6f770000000000000000000000000000006044820152606401610948565b60f8811015615965576158c460c0826168ff565b600060f78203600186019550806020036101000a86510491506001810182019350508083101561105e5760405162461bcd60e51b815260206004820152601160248201527f6164646974696f6e206f766572666c6f770000000000000000000000000000006044820152606401610948565b6000806159e48385616793565b90506040518111156159f4575060005b80615a065762ffffff19915050614544565b5050606092831b9190911790911b1760181b90565b6000816005615a298161368b565b506000615a37856024613539565b90508067ffffffffffffffff16615a4d826149c0565b60ff16615a5a9190616793565b615a65906024616793565b6143eb906004616793565b6000615a8a8260181c6bffffffffffffffffffffffff1690565b615aa28360781c6bffffffffffffffffffffffff1690565b615aac91906167fc565b6bffffffffffffffffffffffff1692915050565b600081600e615ace8161368b565b506000615adc856008613539565b90508067ffffffffffffffff16615af2826149c0565b60ff16615aff9190616793565b6143eb906008616793565b6000615b1c60048360ff16901c615d45565b60ff1661ffff919091161760081b615b3382615d45565b60ff1617919050565b600060ff8211156145c75760405162461bcd60e51b815260206004820152602560248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203860448201527f20626974730000000000000000000000000000000000000000000000000000006064820152608401610948565b60606000615bc286614864565b9150506000615bd086614864565b9150506000615bde86614864565b9150506000615bec86614864565b604080517f54797065644d656d566965772f696e646578202d204f76657272616e2074686560208201527f20766965772e20536c6963652069732061742030780000000000000000000000818301527fffffffffffff000000000000000000000000000000000000000000000000000060d098891b811660558301527f2077697468206c656e6774682030780000000000000000000000000000000000605b830181905297891b8116606a8301527f2e20417474656d7074656420746f20696e646578206174206f6666736574203060708301527f7800000000000000000000000000000000000000000000000000000000000000609083015295881b861660918201526097810196909652951b90921660a684015250507f2e0000000000000000000000000000000000000000000000000000000000000060ac8201528151808203608d01815260ad90910190915295945050505050565b600060f08083179060ff82161415615d605750603092915050565b8060ff1660f11415615d755750603192915050565b8060ff1660f21415615d8a5750603292915050565b8060ff1660f31415615d9f5750603392915050565b8060ff1660f41415615db45750603492915050565b8060ff1660f51415615dc95750603592915050565b8060ff1660f61415615dde5750603692915050565b8060ff1660f71415615df35750603792915050565b8060ff1660f81415615e085750603892915050565b8060ff1660f91415615e1d5750603992915050565b8060ff1660fa1415615e325750606192915050565b8060ff1660fb1415615e475750606292915050565b8060ff1660fc1415615e5c5750606392915050565b8060ff1660fd1415615e715750606492915050565b8060ff1660fe1415615e865750606592915050565b8060ff1660ff141561588f5750606692915050565b5080546000825590600052602060002090810190615eb99190615ebc565b50565b5b808211156145c75760008155600101615ebd565b803573ffffffffffffffffffffffffffffffffffffffff81168114614a1c57600080fd5b60008083601f840112615f06578182fd5b50813567ffffffffffffffff811115615f1d578182fd5b6020830191508360208260051b8501011115614fa957600080fd5b600082601f830112615f48578081fd5b8135602067ffffffffffffffff821115615f6457615f646169da565b8160051b615f738282016166ee565b838152828101908684018388018501891015615f8d578687fd5b8693505b85841015615faf578035835260019390930192918401918401615f91565b50979650505050505050565b60008083601f840112615fcc578182fd5b50813567ffffffffffffffff811115615fe3578182fd5b602083019150836020828501011115614fa957600080fd5b803563ffffffff81168114614a1c57600080fd5b600060208284031215616020578081fd5b61454482615ed1565b6000806040838503121561603b578081fd5b61604483615ed1565b946020939093013593505050565b600080600060608486031215616066578081fd5b61606f84615ed1565b95602085013595506040909401359392505050565b60008060008060808587031215616099578081fd5b6160a285615ed1565b9350602085013592506040850135915060608501356160c0816169f0565b939692955090935050565b600080602083850312156160dd578182fd5b823567ffffffffffffffff8111156160f3578283fd5b6160ff85828601615ef5565b90969095509350505050565b60008060008060408587031215616120578384fd5b843567ffffffffffffffff80821115616137578586fd5b61614388838901615ef5565b9096509450602087013591508082111561615b578384fd5b5061616887828801615ef5565b95989497509550505050565b600080600060408486031215616188578283fd5b833567ffffffffffffffff81111561619e578384fd5b6161aa86828701615ef5565b909790965060209590950135949350505050565b6000602082840312156161cf578081fd5b8151614544816169f0565b600080604083850312156161ec578182fd5b82516161f7816169f0565b602084015190925067ffffffffffffffff81168114616214578182fd5b809150509250929050565b600060208284031215616230578081fd5b5035919050565b600060208284031215616248578081fd5b5051919050565b60008060408385031215616261578182fd5b8235915061627160208401615ed1565b90509250929050565b600080600080600060808688031215616291578283fd5b853567ffffffffffffffff808211156162a8578485fd5b6162b489838a01615fbb565b90975095508591506162c860208901615ffb565b945060408801359150808211156162dd578283fd5b506162ea88828901615f38565b95989497509295606001359392505050565b60008060008060008060a08789031215616314578384fd5b863567ffffffffffffffff8082111561632b578586fd5b6163378a838b01615fbb565b90985096506020915061634b898301615ffb565b955060408901358181111561635e578384fd5b61636a8b828c01615f38565b95505060608901359350608089013581811115616385578384fd5b8901601f81018b13616395578384fd5b8035828111156163a7576163a76169da565b6163b984601f19601f840116016166ee565b92508083528b848284010111156163ce578485fd5b8084830185850137820190920192909252509497939650919450929091565b60008060008060408587031215616402578182fd5b843567ffffffffffffffff80821115616419578384fd5b61642588838901615fbb565b9096509450602087013591508082111561643d578384fd5b5061616887828801615fbb565b6000806040838503121561645c578182fd5b505080516020909101519092909150565b6000815180845260208085019450808401835b8381101561649c57815187529582019590820190600101616480565b509495945050505050565b8183528181602085013750600080602083850101526020601f19601f840116840101905092915050565b600081518084526164e9816020860160208601616962565b601f01601f19169290920160200192915050565b6000825161650f818460208701616962565b9190910192915050565b602081526000614544602083018461646d565b602080825282518282018190526000919060409081850190868401855b8281101561657e578151805167ffffffffffffffff16855286015163ffffffff16868501529284019290850190600101616549565b5091979650505050505050565b60408152600061659e604083018561646d565b828103602084810191909152845180835285820192820190845b818110156165d4578451835293830193918301916001016165b8565b5090979650505050505050565b858152600063ffffffff808716602084015280861660408401525060a0606083015261661060a083018561646d565b90508260808301529695505050505050565b60808152600061663560808301876164d1565b63ffffffff9590951660208301525067ffffffffffffffff929092166040830152606090910152919050565b6020815260006145416020830184866164a7565b6040815260006166896040830186886164a7565b828103602084015261669c8185876164a7565b979650505050505050565b6080815260006166bb6080830187896164a7565b60ff95909516602083015250604081019290925260609091015292915050565b60208152600061454460208301846164d1565b604051601f8201601f1916810167ffffffffffffffff81118282101715616717576167176169da565b604052919050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615616759576167596169c4565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561678d5761678d6169c4565b50500190565b600082198211156167a6576167a66169c4565b500190565b600067ffffffffffffffff8083168185168083038211156167ce576167ce6169c4565b01949350505050565b600060ff821660ff84168060ff038211156167f4576167f46169c4565b019392505050565b60006bffffffffffffffffffffffff8083168185168083038211156167ce576167ce6169c4565b60008261683e57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561685d5761685d6169c4565b500290565b600060ff821660ff84168160ff0481118215151615616883576168836169c4565b029392505050565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156168c5576168c56169c4565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156168f9576168f96169c4565b50500390565b600082821015616911576169116169c4565b500390565b600067ffffffffffffffff83811690831681811015616937576169376169c4565b039392505050565b600060ff821660ff841680821015616959576169596169c4565b90039392505050565b60005b8381101561697d578181015183820152602001616965565b8381111561698c576000848401525b50505050565b6000816169a1576169a16169c4565b506000190190565b60006000198214156169bd576169bd6169c4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114615eb957600080fdfea2646970667358221220bea0a71e9759a76bfbd35ef4814d6933cec1e6e1de74144c4d727b47d570e13664736f6c63430008040033 \ No newline at end of file diff --git a/core/systemcontracts/hermes/pigeon/CandidateHubContract b/core/systemcontracts/hermes/pigeon/CandidateHubContract index cff4a25ae..5c27d87d2 100644 --- a/core/systemcontracts/hermes/pigeon/CandidateHubContract +++ b/core/systemcontracts/hermes/pigeon/CandidateHubContract @@ -1 +1 @@ -60806040526004361061044a5760003560e01c806383091a2e11610243578063ba70d54a11610143578063e1c7392a116100bb578063ee9de3f61161008a578063f9a2bbc71161006f578063f9a2bbc714610b55578063facd743b14610b6b578063fed9727e14610b8b57600080fd5b8063ee9de3f614610b2b578063eef5046614610b4057600080fd5b8063e1c7392a14610abe578063e59dcea514610ad3578063e79a198f14610ae9578063ec607c5e14610afe57600080fd5b8063cd7ac97711610112578063d2a36e46116100f7578063d2a36e4614610a7e578063d87cf91e14610a93578063dc927faf14610aa857600080fd5b8063cd7ac97714610a31578063d1233fc414610a5e57600080fd5b8063ba70d54a146109b9578063c666907b146109ce578063c6a9dcc0146109ee578063c81b166214610a1b57600080fd5b8063a9955b40116101d6578063afbc21c4116101a5578063b3d676f31161018a578063b3d676f314610957578063b87c6c821461096d578063b894aac51461098257600080fd5b8063afbc21c414610921578063b11717241461094157600080fd5b8063a9955b40146108b6578063aa82dce1146108d6578063ac431751146108ec578063ae6079f21461090c57600080fd5b8063995d37ed11610212578063995d37ed1461085e5780639c54a73d146108715780639dc0926214610886578063a78abc161461089c57600080fd5b806383091a2e146108015780638d09732f1461081757806395254e601461082c57806395468d261461084157600080fd5b806343756e5c1161034e57806364f54ec7116102e157806373fa03ed116102b0578063783028a911610295578063783028a9146107c0578063791afc0f146107d657806382f8b6e9146107eb57600080fd5b806373fa03ed1461079557806375b10c71146107aa57600080fd5b806364f54ec714610735578063683e2f4f1461074a5780636a87d7801461075f57806370c9c7911461077557600080fd5b806348fdb8711161031d57806348fdb871146106d357806349f41a42146106e957806350fe7408146107095780635d25e51d1461071f57600080fd5b806343756e5c1461067357806345211bfd14610689578063483a00e8146106ab57806348490b0d146106b357600080fd5b806314c1e1f7116103e157806325ee13e2116103b05780632a5d69b2116103955780632a5d69b21461060f57806330b5468e146106255780633b7681601461065d57600080fd5b806325ee13e2146105e45780632845986b146105fa57600080fd5b806314c1e1f71461058e5780631768b43b146105a45780631a8b9406146105b9578063210d6fd7146105cf57600080fd5b80630bd5a92f1161041d5780630bd5a92f146104dd5780630f43a6771461052557806314843ac91461053b57806314bfb5271461055157600080fd5b8063035f8b701461044f578063042295e11461047757806304e9e3a4146104a557806306a49fce146104bb575b600080fd5b34801561045b57600080fd5b50610464600181565b6040519081526020015b60405180910390f35b34801561048357600080fd5b5061048d61101781565b6040516001600160a01b03909116815260200161046e565b3480156104b157600080fd5b5061048d61100781565b3480156104c757600080fd5b506104d0610ba9565b60405161046e9190615a2d565b3480156104e957600080fd5b506105156104f836600461544b565b6001600160a01b0316600090815260086020526040902054151590565b604051901515815260200161046e565b34801561053157600080fd5b5061046460045481565b34801561054757600080fd5b506104646103e881565b34801561055d57600080fd5b5061051561056c36600461544b565b600a546001600160a01b03909116600090815260096020526040902054101590565b34801561059a57600080fd5b5061048d61100481565b3480156105b057600080fd5b50610464600881565b3480156105c557600080fd5b5062015180610464565b3480156105db57600080fd5b50610464610ca0565b3480156105f057600080fd5b5061048d61100581565b34801561060657600080fd5b50610464600281565b34801561061b57600080fd5b5061048d61101281565b34801561063157600080fd5b5061051561064036600461544b565b6001600160a01b0316600090815260076020526040902054151590565b34801561066957600080fd5b5061048d61101481565b34801561067f57600080fd5b5061048d61100181565b34801561069557600080fd5b506106a96106a436600461544b565b610caf565b005b6106a9610dbe565b3480156106bf57600080fd5b506106a96106ce366004615642565b61100d565b3480156106df57600080fd5b5061046460015481565b3480156106f557600080fd5b506106a961070436600461544b565b61122a565b34801561071557600080fd5b5061048d61101681565b34801561072b57600080fd5b5061048d61101181565b34801561074157600080fd5b506106a9611446565b34801561075657600080fd5b506106a96120e7565b34801561076b57600080fd5b5061046460025481565b34801561078157600080fd5b506106a961079036600461544b565b612232565b3480156107a157600080fd5b50600a54610464565b3480156107b657600080fd5b50610464600a5481565b3480156107cc57600080fd5b5061048d61100881565b3480156107e257600080fd5b50610464600b81565b3480156107f757600080fd5b5061046460035481565b34801561080d57600080fd5b50610464600b5481565b34801561082357600080fd5b50610464612367565b34801561083857600080fd5b50610464612373565b34801561084d57600080fd5b5061046468056bc75e2d6310000081565b6106a961086c36600461546e565b61237f565b34801561087d57600080fd5b50610464612bb0565b34801561089257600080fd5b5061048d61100681565b3480156108a857600080fd5b506000546105159060ff1681565b3480156108c257600080fd5b506106a96108d13660046154e6565b612bbc565b3480156108e257600080fd5b5061048d61101081565b3480156108f857600080fd5b506106a9610907366004615682565b612e8e565b34801561091857600080fd5b50610464601081565b34801561092d57600080fd5b506106a961093c3660046157c2565b61361f565b34801561094d57600080fd5b5061048d61100981565b34801561096357600080fd5b5061048d61101381565b34801561097957600080fd5b506106a96137e3565b34801561098e57600080fd5b506109a261099d3660046157aa565b6138f3565b60405161046e9b9a99989796959493929190615950565b3480156109c557600080fd5b50610464601181565b3480156109da57600080fd5b506105156109e936600461544b565b613c5c565b3480156109fa57600080fd5b50610464610a0936600461544b565b60076020526000908152604090205481565b348015610a2757600080fd5b5061048d61100281565b348015610a3d57600080fd5b50610464610a4c36600461544b565b60096020526000908152604090205481565b348015610a6a57600080fd5b506106a9610a793660046156eb565b613cd1565b348015610a8a57600080fd5b50610464600a81565b348015610a9f57600080fd5b506106a9613e91565b348015610ab457600080fd5b5061048d61100381565b348015610aca57600080fd5b506106a9613faa565b348015610adf57600080fd5b5061046460055481565b348015610af557600080fd5b506106a961405f565b348015610b0a57600080fd5b50610464610b1936600461544b565b600c6020526000908152604090205481565b348015610b3757600080fd5b50610464600481565b348015610b4c57600080fd5b50610464600981565b348015610b6157600080fd5b5061048d61100081565b348015610b7757600080fd5b50610515610b8636600461544b565b61424c565b348015610b9757600080fd5b5061046469021e19e0c9bab240000081565b60065460609060008167ffffffffffffffff811115610bd857634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c01578160200160208202803683370190505b50905060005b82811015610c995760068181548110610c3057634e487b7160e01b600052603260045260246000fd5b60009182526020909120600e909102015482516001600160a01b0390911690839083908110610c6f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039092166020928302919091019091015280610c9181615d68565b915050610c07565b5092915050565b610cac600860ff615cb5565b81565b600080610cba6142c4565b6001600160a01b038516600090815260086020526040902054919350915015610d2a5760405162461bcd60e51b815260206004820152601860248201527f636f6e73656e73757320616c726561647920657869737473000000000000000060448201526064015b60405180910390fd5b6001810180546001600160a01b03908116600090815260086020908152604080832083905584547fffffffffffffffffffffffff00000000000000000000000000000000000000001693881693841790945582825290839020859055915190815233917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591015b60405180910390a2505050565b60005460ff16610e105760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d21565b33600090815260076020526040902054610e6c5760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d21565b34610eb95760405162461bcd60e51b815260206004820152601860248201527f76616c75652073686f756c64206e6f74206265207a65726f00000000000000006044820152606401610d21565b3360009081526007602052604081205490346006610ed8600185615cb5565b81548110610ef657634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e020160040154610f129190615c7d565b9050806006610f22600185615cb5565b81548110610f4057634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e020160040181905550336001600160a01b03167f4ab0f80899f780c0521f849ed8883e85682657aa1d8979dde42d5f347b995db63483604051610f99929190918252602082015260400190565b60405180910390a260015481106110095760006006610fb9600185615cb5565b81548110610fd757634e487b7160e01b600052603260045260246000fd5b600091825260208220600e909102019150610ff4600860ff615cb5565b8260050154169050611006828261437c565b50505b5050565b60006110176142c4565b9150506030821461106a5760405162461bcd60e51b815260206004820181905260248201527f766f74652061646472657373206c656e6774682073686f756c642062652034386044820152606401610d21565b60065460005b818110156111d1576111726006828154811061109c57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e020160080180546110b890615d2d565b80601f01602080910402602001604051908101604052809291908181526020018280546110e490615d2d565b80156111315780601f1061110657610100808354040283529160200191611131565b820191906000526020600020905b81548152906001019060200180831161111457829003601f168201915b505050505086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506143d392505050565b156111bf5760405162461bcd60e51b815260206004820152601b60248201527f766f7465206164647265737320616c72656164792065786973747300000000006044820152606401610d21565b806111c981615d68565b915050611070565b506111e0600883018585615208565b50336001600160a01b03167f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d858560405161121c929190615b03565b60405180910390a250505050565b336000908152600760205260409020546112865760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d21565b336000908152600760205260408120549060066112a4600184615cb5565b815481106112c257634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e0201905060006001600160a01b0316836001600160a01b031614156113355760405162461bcd60e51b815260206004820152601c60248201527f6167656e7420616464726573732063616e6e6f74206265207a65726f000000006044820152606401610d21565b6001600160a01b0383166000908152600c60205260409020541561139b5760405162461bcd60e51b815260206004820152601c60248201527f6167656e74206164647265737320616c726561647920657869737473000000006044820152606401610d21565b60098101546001600160a01b0316156113cc5760098101546001600160a01b03166000908152600c60205260408120555b6001600160a01b0383166000818152600c60209081526040918290208590556009840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055905191825233917fee7760cb405d3beb1072ae2e716857daa45a5dd52bc1383a21173199d32c7dee9101610db1565b3341146114bb5760405162461bcd60e51b815260206004820152602d60248201527f746865206d6573736167652073656e646572206d75737420626520746865206260448201527f6c6f636b2070726f6475636572000000000000000000000000000000000000006064820152608401610d21565b60005460ff1661150d5760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d21565b3a1561155b5760405162461bcd60e51b815260206004820152601460248201527f6761737072696365206973206e6f74207a65726f0000000000000000000000006044820152606401610d21565b6110006001600160a01b031663c1c6450f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561159857600080fd5b505af11580156115ac573d6000803e3d6000fd5b5050600a546040517f940a4e450000000000000000000000000000000000000000000000000000000081526004810191909152611000925063940a4e459150602401600060405180830381600087803b15801561160857600080fd5b505af115801561161c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611662919081019061551a565b5061166b614437565b6006546000808267ffffffffffffffff81111561169857634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156116c1578160200160208202803683370190505b50905060005b8381101561178b576116db601060ff615cb5565b600682815481106116fc57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e0201600501541682828151811061172f57634e487b7160e01b600052603260045260246000fd5b602002602001018181525050600182828151811061175d57634e487b7160e01b600052603260045260246000fd5b60200260200101511415611779578261177581615d68565b9350505b8061178381615d68565b9150506116c7565b5060008267ffffffffffffffff8111156117b557634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156117de578160200160208202803683370190505b5090506000805b858110156118b657600184828151811061180f57634e487b7160e01b600052603260045260246000fd5b602002602001015114156118a4576006818154811061183e57634e487b7160e01b600052603260045260246000fd5b60009182526020909120600e90910201546001600160a01b0316838361186381615d68565b94508151811061188357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b806118ae81615d68565b9150506117e5565b50600a546040517f1cf0cc5d00000000000000000000000000000000000000000000000000000000815260009161101091631cf0cc5d916118fc91879190600401615ae1565b600060405180830381600087803b15801561191657600080fd5b505af115801561192a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261197091908101906155bb565b90506000611984600b5460045486516144c4565b905060006119a185848460045461199b9190615c7d565b856144fc565b90506000815167ffffffffffffffff8111156119cd57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156119f6578160200160208202803683370190505b5090506000825167ffffffffffffffff811115611a2357634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611a4c578160200160208202803683370190505b5090506000835167ffffffffffffffff811115611a7957634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611aa2578160200160208202803683370190505b5090506000845167ffffffffffffffff811115611acf57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611b0257816020015b6060815260200190600190039081611aed5790505b50905060005b8551811015611dd857600060076000888481518110611b3757634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060006006600183611b739190615cb5565b81548110611b9157634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e020190508060010160009054906101000a90046001600160a01b0316878481518110611bd957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260028201548751911690879085908110611c1957634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050806008018054611c4890615d2d565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7490615d2d565b8015611cc15780601f10611c9657610100808354040283529160200191611cc1565b820191906000526020600020905b815481529060010190602001808311611ca457829003601f168201915b5050505050848481518110611ce657634e487b7160e01b600052603260045260246000fd5b6020026020010181905250898381518110611d1157634e487b7160e01b600052603260045260246000fd5b602002602001015160001415611d55576103e8858481518110611d4457634e487b7160e01b600052603260045260246000fd5b602002602001018181525050611d87565b8060030154858481518110611d7a57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b60108d611d95600185615cb5565b81518110611db357634e487b7160e01b600052603260045260246000fd5b602002602001018181511791508181525050505080611dd190615d68565b9050611b08565b50600480546040517f87909e48000000000000000000000000000000000000000000000000000000008152611000926387909e4892611e22928a928a928a928a928a929101615a40565b600060405180830381600087803b158015611e3c57600080fd5b505af1158015611e50573d6000803e3d6000fd5b505050506110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e9157600080fd5b505af1158015611ea5573d6000803e3d6000fd5b5050600a546040517f773b807e000000000000000000000000000000000000000000000000000000008152611010935063773b807e9250611eea918991600401615ae1565b600060405180830381600087803b158015611f0457600080fd5b505af1158015611f18573d6000803e3d6000fd5b5050505060005b8c81101561202057600060068281548110611f4a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320600e909202909101546001600160a01b031680835260099091526040909120549091508015801590611f885750600a548111155b1561200b57611f99600460ff615cb5565b8d8481518110611fb957634e487b7160e01b600052603260045260246000fd5b6020026020010151168d8481518110611fe257634e487b7160e01b600052603260045260246000fd5b6020908102919091018101919091526001600160a01b0383166000908152600990915260408120555b5050808061201890615d68565b915050611f1f565b5060005b8c81101561209d5761208b6006828154811061205057634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e02018c838151811061207e57634e487b7160e01b600052603260045260246000fd5b602002602001015161437c565b8061209581615d68565b915050612024565b507f46ef24241b0cc39b9df0fbf1ddfb1fde02277e0bc7fc6dc47e34d3fd828e76d2600a546040516120d191815260200190565b60405180910390a1505050505050505050505050565b336000908152600760205260409020546121435760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d21565b33600090815260076020526040812054906006612161600184615cb5565b8154811061217f57634e487b7160e01b600052603260045260246000fd5b60009182526020909120600e9091020160098101549091506001600160a01b03166121ec5760405162461bcd60e51b815260206004820152601c60248201527f6167656e74206164647265737320646f6573206e6f74206578697374000000006044820152606401610d21565b60090180546001600160a01b03166000908152600c602052604081205580547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b3360009081526007602052604090205461228e5760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d21565b60006122986142c4565b9150506001600160a01b0382166122f15760405162461bcd60e51b815260206004820152601a60248201527f66656520616464726573732063616e6e6f74206265207a65726f0000000000006044820152606401610d21565b6002810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038481169182179092558254604051918252909116907f2201807e0167c4a10dbdc42280df04aa7c53cde48a0cfdd96c400968bff934639060200160405180910390a25050565b610cac600460ff615cb5565b610cac600260ff615cb5565b60005460ff166123d15760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d21565b6006546103e88111156124265760405162461bcd60e51b815260206004820152601e60248201527f6d6178696d756d2063616e6469646174652073697a65207265616368656400006044820152606401610d21565b33600090815260076020526040902054156124835760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520616c72656164792065786973747300000000000000006044820152606401610d21565b6001543410156124d55760405162461bcd60e51b815260206004820152601560248201527f6465706f736974206973206e6f7420656e6f75676800000000000000000000006044820152606401610d21565b63ffffffff8416158015906124f157506103e88463ffffffff16105b6125635760405162461bcd60e51b815260206004820152602c60248201527f636f6d6d697373696f6e54686f7573616e647468732073686f756c642062652060448201527f696e2028302c20313030302900000000000000000000000000000000000000006064820152608401610d21565b6001600160a01b038616600090815260086020526040902054156125c95760405162461bcd60e51b815260206004820152601860248201527f636f6e73656e73757320616c72656164792065786973747300000000000000006044820152606401610d21565b6001600160a01b0386166126445760405162461bcd60e51b8152602060048201526024808201527f636f6e73656e73757320616464726573732073686f756c64206e6f742062652060448201527f7a65726f000000000000000000000000000000000000000000000000000000006064820152608401610d21565b6001600160a01b03851661269a5760405162461bcd60e51b815260206004820152601e60248201527f66656520616464726573732073686f756c64206e6f74206265207a65726f00006044820152606401610d21565b600a5433600090815260096020526040902054106126fa5760405162461bcd60e51b815260206004820152600d60248201527f697420697320696e206a61696c000000000000000000000000000000000000006044820152606401610d21565b6030821461274a5760405162461bcd60e51b815260206004820181905260248201527f766f74652061646472657373206c656e6774682073686f756c642062652034386044820152606401610d21565b60005b818110156128ae5761284f6006828154811061277957634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e0201600801805461279590615d2d565b80601f01602080910402602001604051908101604052809291908181526020018280546127c190615d2d565b801561280e5780601f106127e35761010080835404028352916020019161280e565b820191906000526020600020905b8154815290600101906020018083116127f157829003601f168201915b505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506143d392505050565b1561289c5760405162461bcd60e51b815260206004820152601b60248201527f766f7465206164647265737320616c72656164792065786973747300000000006044820152606401610d21565b806128a681615d68565b91505061274d565b506000600190506006604051806101600160405280336001600160a01b03168152602001896001600160a01b03168152602001886001600160a01b031681526020018763ffffffff168152602001348152602001838152602001600a5481526020018763ffffffff16815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505060208083018290526040805160a0808201835260808083018681528352835180860185528681528386015283518086018552868152838501528351808601855286815260608085019190915296840192909252875460018082018a55988652948490208751600e9096020180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0397881617825588860151998201805482169a88169a909a1790995592870151600284018054909916951694909417909655928401516003840155938301516004830155820151600582015560c0820151600682015560e08201516007820155610100820151805192939192612a6892600885019201906152aa565b506101208201516009820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905561014082015180518051600a840191612ac6918391602001906152aa565b506020828101518051612adf92600185019201906152aa565b5060408201518051612afb9160028401916020909101906152aa565b5060608201518051612b179160038401916020909101906152aa565b5050505050816001612b299190615c7d565b33600090815260076020526040902055612b44826001615c7d565b6001600160a01b0380891660008181526008602052604090819020939093559151908816919033907fd3cecec2d6f105086150c48758f137637d34ef078dc79d93318d95dd0fc45e0990612b9f908a9034908b908b90615bda565b60405180910390a450505050505050565b610cac601060ff615cb5565b3361100014612c335760405162461bcd60e51b815260206004820152602c60248201527f746865206d73672073656e646572206d7573742062652076616c696461746f7260448201527f53657420636f6e747261637400000000000000000000000000000000000000006064820152608401610d21565b6001600160a01b03831660009081526007602052604090205480612c575750505050565b60006006612c66600184615cb5565b81548110612c8457634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e020190506000816004015490506002548110158015612cbc57508360025482612cb99190615cb5565b10155b15612e075760058201546001600160a01b03871660009081526009602052604090205460049091179015612d2c576001600160a01b038716600090815260096020526040902054612d0e908790615c7d565b6001600160a01b038816600090815260096020526040902055612d54565b85600a54612d3a9190615c7d565b6001600160a01b0388166000908152600960205260409020555b6000612d608684615cb5565b6004850181905560408051888152602081018390529192506001600160a01b038a16917f81cfec6c72eedd64db356101ba3b131efdc623de91bb003917d85a30dd79dc14910160405180910390a2600154811015612dbf576008821791505b612dc9848361437c565b8515612e00576040516110029087156108fc029088906000818181858888f19350505050158015612dfe573d6000803e3d6000fd5b505b5050612e85565b612e1083614b18565b6040516110029082156108fc029083906000818181858888f19350505050158015612e3f573d6000803e3d6000fd5b5060408051828152600060208201526001600160a01b038816917f81cfec6c72eedd64db356101ba3b131efdc623de91bb003917d85a30dd79dc14910160405180910390a25b5050505b505050565b60005460ff16612ee05760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d21565b3361100614612f575760405162461bcd60e51b815260206004820152602a60248201527f746865206d73672073656e646572206d75737420626520676f7665726e616e6360448201527f6520636f6e7472616374000000000000000000000000000000000000000000006064820152608401610d21565b60208114612f955783836040517fad23613c000000000000000000000000000000000000000000000000000000008152600401610d21929190615b03565b61300984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600e81527f72657175697265644d617267696e000000000000000000000000000000000000602082015291506150919050565b156130c957604080516020601f840181900481028201810190925282815260009161304c918585808385018382808284376000920191909152506150ea92505050565b905060025481116130c15784848260025460016130699190615c7d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610d21959493929190615ba9565b6001556135dc565b61313d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600481527f6475657300000000000000000000000000000000000000000000000000000000602082015291506150919050565b156131e857604080516020601f8401819004810282018101909252828152600091613180918585808385018382808284376000920191909152506150ea92505050565b905080158061319157506001548110155b156131e0578484826001806001546131a99190615cb5565b6040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610d21959493929190615ba9565b6002556135dc565b61325c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600e81527f76616c696461746f72436f756e74000000000000000000000000000000000000602082015291506150919050565b1561339857604080516020601f840181900481028201810190925282815260009161329f918585808385018382808284376000920191909152506150ea92505050565b90506005811115806132b25750602a8110155b156132f557848482600660296040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610d21959493929190615ba9565b613300600382615c95565b600b54111561339057600b546000613319600384615c95565b6040517f808861f900000000000000000000000000000000000000000000000000000000815260806004820152601160848201527f6d6178416c7465726e617465436f756e7400000000000000000000000000000060a482015260248101939093526044830191909152606482015260c401610d21565b6004556135dc565b61340c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601381527f6d6178436f6d6d697373696f6e4368616e676500000000000000000000000000602082015291506150919050565b156134bb57604080516020601f840181900481028201810190925282815260009161344f918585808385018382808284376000920191909152506150ea92505050565b9050806134b35784848260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610d21959493929190615ba9565b6005556135dc565b61352f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527f6d6178416c7465726e617465436f756e74000000000000000000000000000000602082015291506150919050565b156135a657604080516020601f8401819004810282018101909252828152600091613572918585808385018382808284376000920191909152506150ea92505050565b905060036004546135839190615c95565b81111561359e57848482600060036004546131a99190615c95565b600b556135dc565b83836040517f64b4f604000000000000000000000000000000000000000000000000000000008152600401610d21929190615b03565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516136119493929190615b17565b60405180910390a150505050565b60006136296142c4565b91505063ffffffff82161580159061364857506103e88263ffffffff16105b6136ba5760405162461bcd60e51b815260206004820152602f60248201527f636f6d6d697373696f6e54686f7573616e647468732073686f756c6420696e2060448201527f72616e67652028302c20313030302900000000000000000000000000000000006064820152608401610d21565b60008160060154600a54146136d35781600301546136d9565b81600701545b9050806005548463ffffffff166136f09190615c7d565b1015801561371157508263ffffffff166005548261370e9190615c7d565b10155b6137835760405162461bcd60e51b815260206004820152602d60248201527f636f6d6d697373696f6e54686f7573616e64746873206f7574206f662061646a60448201527f7573746d656e742072616e6765000000000000000000000000000000000000006064820152608401610d21565b8160060154600a54146137a357600a546006830155600382015460078301555b63ffffffff83166003830181905560405190815233907fac9d93df3796500746288181878308b427f0a9c3660ad91ca609eb525a5c22da90602001610db1565b60005460ff166138355760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d21565b336000908152600760205260409020546138915760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d21565b336000908152600760205260408120549060066138af600184615cb5565b815481106138cd57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e02019050600060028260050154179050612e89828261437c565b6006818154811061390357600080fd5b60009182526020909120600e90910201805460018201546002830154600384015460048501546005860154600687015460078801546008890180546001600160a01b03998a169b50978916999890961697949693959294919390929061396890615d2d565b80601f016020809104026020016040519081016040528092919081815260200182805461399490615d2d565b80156139e15780601f106139b6576101008083540402835291602001916139e1565b820191906000526020600020905b8154815290600101906020018083116139c457829003601f168201915b5050505050908060090160009054906101000a90046001600160a01b03169080600a01604051806080016040529081600082018054613a1f90615d2d565b80601f0160208091040260200160405190810160405280929190818152602001828054613a4b90615d2d565b8015613a985780601f10613a6d57610100808354040283529160200191613a98565b820191906000526020600020905b815481529060010190602001808311613a7b57829003601f168201915b50505050508152602001600182018054613ab190615d2d565b80601f0160208091040260200160405190810160405280929190818152602001828054613add90615d2d565b8015613b2a5780601f10613aff57610100808354040283529160200191613b2a565b820191906000526020600020905b815481529060010190602001808311613b0d57829003601f168201915b50505050508152602001600282018054613b4390615d2d565b80601f0160208091040260200160405190810160405280929190818152602001828054613b6f90615d2d565b8015613bbc5780601f10613b9157610100808354040283529160200191613bbc565b820191906000526020600020905b815481529060010190602001808311613b9f57829003601f168201915b50505050508152602001600382018054613bd590615d2d565b80601f0160208091040260200160405190810160405280929190818152602001828054613c0190615d2d565b8015613c4e5780601f10613c2357610100808354040283529160200191613c4e565b820191906000526020600020905b815481529060010190602001808311613c3157829003601f168201915b50505050508152505090508b565b6001600160a01b03811660009081526007602052604081205480613c835750600092915050565b60006006613c92600184615cb5565b81548110613cb057634e487b7160e01b600052603260045260246000fd5b600091825260209091206005600e9092020101546011811614949350505050565b6000613cdb6142c4565b91505060405180608001604052808a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8b0181900481028201810190925289815291810191908a908a9081908401838280828437600092019190915250505090825250604080516020601f890181900481028201810190925287815291810191908890889081908401838280828437600092019190915250505090825250604080516020601f870181900481028201810190925285815291810191908690869081908401838280828437600092019190915250505091525080518051600a840191613dea918391602001906152aa565b506020828101518051613e0392600185019201906152aa565b5060408201518051613e1f9160028401916020909101906152aa565b5060608201518051613e3b9160038401916020909101906152aa565b50506040513391507f0855cadd9b674544854198dbb1f1d0711fad19c4fb83423fdc6c77cc26ca223690613e7e908c908c908c908c908c908c908c908c90615b49565b60405180910390a2505050505050505050565b60005460ff16613ee35760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d21565b33600090815260076020526040902054613f3f5760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d21565b33600090815260076020526040812054906006613f5d600184615cb5565b81548110613f7b57634e487b7160e01b600052603260045260246000fd5b600091825260208220600e909102019150613f98600260ff615cb5565b8260050154169050612e89828261437c565b60005460ff1615613ffd5760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e6974000000000000006044820152606401610d21565b69021e19e0c9bab240000060015568056bc75e2d631000006002556009600455600a60055561402f6201518042615c95565b600a55600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60005460ff166140b15760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d21565b3360009081526007602052604090205461410d5760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d21565b3360009081526007602052604081205490600661412b600184615cb5565b8154811061414957634e487b7160e01b600052603260045260246000fd5b60009182526020909120600e909102016005810154909150600b8116146141b25760405162461bcd60e51b815260206004820152601f60248201527f63616e64696461746520737461747573206973206e6f7420636c6561726564006044820152606401610d21565b60048101546141c083614b18565b60025481111561421d576000600254826141da9190615cb5565b90506141e633826150ef565b6002546040516110029180156108fc02916000818181858888f19350505050158015614216573d6000803e3d6000fd5b5050505050565b6040516110029082156108fc029083906000818181858888f19350505050158015611006573d6000803e3d6000fd5b6001600160a01b038116600090815260076020526040812054806142735750600092915050565b60006006614282600184615cb5565b815481106142a057634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e02016005015490506010811660101492505050919050565b336000908152600760205260408120548190806143395750336000908152600c6020526040902054806143395760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d21565b806006614347600183615cb5565b8154811061436557634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e020192509250509091565b6005820154818114612e895760058301829055825460408051838152602081018590526001600160a01b03909216917f4b35b40ad96adb69950ee8e04201a2258550524199e2fcf2b5d3830023ff99ce9101610db1565b8151815160009160019181148083146143ef576000925061442d565b600160208701838101602088015b60028483851001141561442857805183511461441c5760009650600093505b602092830192016143fd565b505050505b5090949350505050565b60006144466201518042615c95565b9050600a5481116144bf5760405162461bcd60e51b815260206004820152602d60248201527f6e6f7420616c6c6f77656420746f207475726e20726f756e642c20776169742060448201527f666f72206d6f72652074696d65000000000000000000000000000000000000006064820152608401610d21565b600a55565b60008282116144d657600093506144f4565b6144e08484615c7d565b8210156144f4576144f18383615cb5565b93505b509192915050565b60608183116145735760405162461bcd60e51b815260206004820152602860248201527f636f756e742073686f756c642062652067726561746572207468616e20736f7260448201527f746564436f756e740000000000000000000000000000000000000000000000006064820152608401610d21565b8451806145805750614b10565b6000808286101561459d57614596600184615cb5565b90506145a1565b8295505b808210156148df578751829082906000908b90849081106145d257634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008a84815181106145fe57634e487b7160e01b600052603260045260246000fd5b602002602001015190505b82841015614829575b82841080156146475750808b848151811061463d57634e487b7160e01b600052603260045260246000fd5b6020026020010151105b1561465e57614657600184615cb5565b9250614612565b8b838151811061467e57634e487b7160e01b600052603260045260246000fd5b60200260200101518c85815181106146a657634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250508a83815181106146e657634e487b7160e01b600052603260045260246000fd5b60200260200101518b858151811061470e57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b82841080156147515750808b858151811061474657634e487b7160e01b600052603260045260246000fd5b602002602001015110155b1561476857614761846001615c7d565b935061471b565b8b848151811061478857634e487b7160e01b600052603260045260246000fd5b60200260200101518c84815181106147b057634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250508a84815181106147f057634e487b7160e01b600052603260045260246000fd5b60200260200101518b848151811061481857634e487b7160e01b600052603260045260246000fd5b602002602001018181525050614609565b818c858151811061484a57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050808b858151811061488b57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152838a8110156148b1576148aa816001615c7d565b96506148d5565b8a8111156148cb576148c4600182615cb5565b95506148d5565b50505050506148df565b50505050506145a1565b60006148ec600188615cb5565b90505b6148f98688615cb5565b8110614aec57600060015b8281116149775789828151811061492b57634e487b7160e01b600052603260045260246000fd5b60200260200101518a828151811061495357634e487b7160e01b600052603260045260246000fd5b60200260200101511015614965578091505b8061496f81615d68565b915050614904565b50818114614ad95789818151811061499f57634e487b7160e01b600052603260045260246000fd5b60200260200101518a83815181106149c757634e487b7160e01b600052603260045260246000fd5b60200260200101518b84815181106149ef57634e487b7160e01b600052603260045260246000fd5b602002602001018c8481518110614a1657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384166020918202929092010152911690528851899082908110614a5257634e487b7160e01b600052603260045260246000fd5b6020026020010151898381518110614a7a57634e487b7160e01b600052603260045260246000fd5b60200260200101518a8481518110614aa257634e487b7160e01b600052603260045260246000fd5b602002602001018b8481518110614ac957634e487b7160e01b600052603260045260246000fd5b6020908102919091010191909152525b5080614ae481615cf8565b9150506148ef565b506000614af98785615cb5565b90508015614b08578089510389525b889450505050505b949350505050565b60006006614b27600184615cb5565b81548110614b4557634e487b7160e01b600052603260045260246000fd5b6000918252602082206001600e909202019081015481546040519294506001600160a01b03918216939116917f17b07b19259c7122b0e5b0e3a4ca4ebf0b240e93e26cb44cff9addc7dbf9e99c9190a360098101546001600160a01b031615614bc65760098101546001600160a01b03166000908152600c60205260408120555b80546001600160a01b0390811660009081526007602090815260408083208390556001850154909316825260089052908120556006548214614f635760068054614c1290600190615cb5565b81548110614c3057634e487b7160e01b600052603260045260246000fd5b90600052602060002090600e02016006600184614c4d9190615cb5565b81548110614c6b57634e487b7160e01b600052603260045260246000fd5b600091825260209091208254600e9092020180546001600160a01b039283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178255600180850154908301805491851691831691909117905560028085015490830180549190941691161790915560038083015490820155600480830154908201556005808301549082015560068083015490820155600780830154908201556008808301805491830191614d2390615d2d565b614d2e92919061531e565b5060098281015490820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055600a8083018054909183019081908390614d8690615d2d565b614d9192919061531e565b506001820181600101908054614da690615d2d565b614db192919061531e565b506002820181600201908054614dc690615d2d565b614dd192919061531e565b506003820181600301908054614de690615d2d565b614df192919061531e565b50505090505081600760006006600186614e0b9190615cb5565b81548110614e2957634e487b7160e01b600052603260045260246000fd5b60009182526020808320600e909202909101546001600160a01b0316835282019290925260400181209190915582906008906006614e68600185615cb5565b81548110614e8657634e487b7160e01b600052603260045260246000fd5b600091825260208083206001600e909302018201546001600160a01b031684528301939093526040909101812092909255600690614ec49085615cb5565b81548110614ee257634e487b7160e01b600052603260045260246000fd5b600091825260209091206009600e9092020101546001600160a01b031614614f635781600c60006006614f16600185615cb5565b81548110614f3457634e487b7160e01b600052603260045260246000fd5b600091825260208083206009600e9093020191909101546001600160a01b031683528201929092526040019020555b6006805480614f8257634e487b7160e01b600052603160045260246000fd5b600082815260208120600e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811682556001820180548216905560028201805490911690556003810182905560048101829055600581018290556006810182905560078101829055906150236008830182615399565b6009820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600a8201600061505d8282615399565b61506b600183016000615399565b615079600283016000615399565b615087600383016000615399565b5050505090555050565b6000816040516020016150a49190615934565b60405160208183030381529060405280519060200120836040516020016150cb9190615934565b6040516020818303038152906040528051906020012014905092915050565b015190565b8047101561513f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610d21565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461518c576040519150601f19603f3d011682016040523d82523d6000602084013e615191565b606091505b5050905080612e895760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610d21565b82805461521490615d2d565b90600052602060002090601f016020900481019282615236576000855561529a565b82601f1061526d578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082351617855561529a565b8280016001018555821561529a579182015b8281111561529a57823582559160200191906001019061527f565b506152a69291506153d6565b5090565b8280546152b690615d2d565b90600052602060002090601f0160209004810192826152d8576000855561529a565b82601f106152f157805160ff191683800117855561529a565b8280016001018555821561529a579182015b8281111561529a578251825591602001919060010190615303565b82805461532a90615d2d565b90600052602060002090601f01602090048101928261534c576000855561529a565b82601f1061535d578054855561529a565b8280016001018555821561529a57600052602060002091601f016020900482015b8281111561529a57825482559160010191906001019061537e565b5080546153a590615d2d565b6000825580601f106153b5575050565b601f0160209004906000526020600020908101906153d391906153d6565b50565b5b808211156152a657600081556001016153d7565b60008083601f8401126153fc578182fd5b50813567ffffffffffffffff811115615413578182fd5b60208301915083602082850101111561542b57600080fd5b9250929050565b803563ffffffff8116811461544657600080fd5b919050565b60006020828403121561545c578081fd5b813561546781615dcd565b9392505050565b600080600080600060808688031215615485578081fd5b853561549081615dcd565b945060208601356154a081615dcd565b93506154ae60408701615432565b9250606086013567ffffffffffffffff8111156154c9578182fd5b6154d5888289016153eb565b969995985093965092949392505050565b6000806000606084860312156154fa578283fd5b833561550581615dcd565b95602085013595506040909401359392505050565b6000602080838503121561552c578182fd5b825167ffffffffffffffff811115615542578283fd5b8301601f81018513615552578283fd5b805161556561556082615c59565b615c0a565b80828252848201915084840188868560051b8701011115615584578687fd5b8694505b838510156155af57805161559b81615dcd565b835260019490940193918501918501615588565b50979650505050505050565b600060208083850312156155cd578182fd5b825167ffffffffffffffff8111156155e3578283fd5b8301601f810185136155f3578283fd5b805161560161556082615c59565b80828252848201915084840188868560051b8701011115615620578687fd5b8694505b838510156155af578051835260019490940193918501918501615624565b60008060208385031215615654578182fd5b823567ffffffffffffffff81111561566a578283fd5b615676858286016153eb565b90969095509350505050565b60008060008060408587031215615697578384fd5b843567ffffffffffffffff808211156156ae578586fd5b6156ba888389016153eb565b909650945060208701359150808211156156d2578384fd5b506156df878288016153eb565b95989497509550505050565b6000806000806000806000806080898b031215615706578283fd5b883567ffffffffffffffff8082111561571d578485fd5b6157298c838d016153eb565b909a50985060208b0135915080821115615741578485fd5b61574d8c838d016153eb565b909850965060408b0135915080821115615765578485fd5b6157718c838d016153eb565b909650945060608b0135915080821115615789578384fd5b506157968b828c016153eb565b999c989b5096995094979396929594505050565b6000602082840312156157bb578081fd5b5035919050565b6000602082840312156157d3578081fd5b61546782615432565b6000815180845260208085019450808401835b838110156158145781516001600160a01b0316875295820195908201906001016157ef565b509495945050505050565b600081518084526020808501808196508360051b81019150828601855b858110156158665782840389526158548483516158ea565b9885019893509084019060010161583c565b5091979650505050505050565b6000815180845260208085019450808401835b8381101561581457815187529582019590820190600101615886565b81835281816020850137506000806020838501015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008151808452615902816020860160208601615ccc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008251615946818460208701615ccc565b9190910192915050565b60006101606001600160a01b03808f168452808e166020850152808d1660408501528b60608501528a60808501528960a08501528860c08501528760e0850152816101008501526159a3828501886158ea565b9150808616610120850152508281036101408401528351608082526159cb60808301826158ea565b9050602085015182820360208401526159e482826158ea565b915050604085015182820360408401526159fe82826158ea565b91505060608501518282036060840152615a1882826158ea565b93505050509c9b505050505050505050505050565b60208152600061546760208301846157dc565b60c081526000615a5360c08301896157dc565b602083820381850152615a66828a6157dc565b84810360408601528851808252828a01935090820190845b81811015615aa35784516001600160a01b031683529383019391830191600101615a7e565b50508481036060860152615ab78189615873565b925050508281036080840152615acd818661581f565b9150508260a0830152979650505050505050565b604081526000615af460408301856157dc565b90508260208301529392505050565b602081526000614b106020830184866158a2565b604081526000615b2b6040830186886158a2565b8281036020840152615b3e8185876158a2565b979650505050505050565b608081526000615b5d608083018a8c6158a2565b8281036020840152615b7081898b6158a2565b90508281036040840152615b858187896158a2565b90508281036060840152615b9a8185876158a2565b9b9a5050505050505050505050565b608081526000615bbd6080830187896158a2565b602083019590955250604081019290925260609091015292915050565b63ffffffff85168152836020820152606060408201526000615c006060830184866158a2565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715615c5157615c51615db7565b604052919050565b600067ffffffffffffffff821115615c7357615c73615db7565b5060051b60200190565b60008219821115615c9057615c90615da1565b500190565b600082615cb057634e487b7160e01b81526012600452602481fd5b500490565b600082821015615cc757615cc7615da1565b500390565b60005b83811015615ce7578181015183820152602001615ccf565b838111156110065750506000910152565b600081615d0757615d07615da1565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600181811c90821680615d4157607f821691505b60208210811415615d6257634e487b7160e01b600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615d9a57615d9a615da1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146153d357600080fdfea2646970667358221220ff17e9bb52deac9590b1c1d2f44901631e0d77dab39932f43c9fc427adbe651364736f6c63430008040033 \ No newline at end of file +60806040526004361061044a5760003560e01c806383091a2e11610243578063ba70d54a11610143578063e59dcea5116100bb578063eef504661161008a578063facd743b1161006f578063facd743b14610b80578063fc87695314610ba0578063fed9727e14610bce57600080fd5b8063eef5046614610b55578063f9a2bbc714610b6a57600080fd5b8063e59dcea514610ae8578063e79a198f14610afe578063ec607c5e14610b13578063ee9de3f614610b4057600080fd5b8063cd7ac97711610112578063d87cf91e116100f7578063d87cf91e14610aa8578063dc927faf14610abd578063e1c7392a14610ad357600080fd5b8063cd7ac97714610a66578063d2a36e4614610a9357600080fd5b8063ba70d54a146109ee578063c666907b14610a03578063c6a9dcc014610a23578063c81b166214610a5057600080fd5b8063a9955b40116101d6578063afbc21c4116101a5578063b3d676f31161018a578063b3d676f314610957578063b87c6c821461096d578063b894aac51461098257600080fd5b8063afbc21c414610921578063b11717241461094157600080fd5b8063a9955b40146108b6578063aa82dce1146108d6578063ac431751146108ec578063ae6079f21461090c57600080fd5b8063995d37ed11610212578063995d37ed1461085e5780639c54a73d146108715780639dc0926214610886578063a78abc161461089c57600080fd5b806383091a2e146108015780638d09732f1461081757806395254e601461082c57806395468d261461084157600080fd5b806343756e5c1161034e57806364f54ec7116102e157806373fa03ed116102b0578063783028a911610295578063783028a9146107c0578063791afc0f146107d657806382f8b6e9146107eb57600080fd5b806373fa03ed1461079557806375b10c71146107aa57600080fd5b806364f54ec714610735578063683e2f4f1461074a5780636a87d7801461075f57806370c9c7911461077557600080fd5b806348fdb8711161031d57806348fdb871146106d357806349f41a42146106e957806350fe7408146107095780635d25e51d1461071f57600080fd5b806343756e5c1461067357806345211bfd14610689578063483a00e8146106ab57806348490b0d146106b357600080fd5b806314c1e1f7116103e157806325ee13e2116103b05780632a5d69b2116103955780632a5d69b21461060f57806330b5468e146106255780633b7681601461065d57600080fd5b806325ee13e2146105e45780632845986b146105fa57600080fd5b806314c1e1f71461058e5780631768b43b146105a45780631a8b9406146105b9578063210d6fd7146105cf57600080fd5b80630bd5a92f1161041d5780630bd5a92f146104dd5780630f43a6771461052557806314843ac91461053b57806314bfb5271461055157600080fd5b8063035f8b701461044f578063042295e11461047757806304e9e3a4146104a557806306a49fce146104bb575b600080fd5b34801561045b57600080fd5b50610464600181565b6040519081526020015b60405180910390f35b34801561048357600080fd5b5061048d61101781565b6040516001600160a01b03909116815260200161046e565b3480156104b157600080fd5b5061048d61100781565b3480156104c757600080fd5b506104d0610bec565b60405161046e91906152ca565b3480156104e957600080fd5b506105156104f8366004614e62565b6001600160a01b0316600090815260086020526040902054151590565b604051901515815260200161046e565b34801561053157600080fd5b5061046460045481565b34801561054757600080fd5b506104646103e881565b34801561055d57600080fd5b5061051561056c366004614e62565b600a546001600160a01b03909116600090815260096020526040902054101590565b34801561059a57600080fd5b5061048d61100481565b3480156105b057600080fd5b50610464600881565b3480156105c557600080fd5b5062015180610464565b3480156105db57600080fd5b50610464610ce3565b3480156105f057600080fd5b5061048d61100581565b34801561060657600080fd5b50610464600281565b34801561061b57600080fd5b5061048d61101281565b34801561063157600080fd5b50610515610640366004614e62565b6001600160a01b0316600090815260076020526040902054151590565b34801561066957600080fd5b5061048d61101481565b34801561067f57600080fd5b5061048d61100181565b34801561069557600080fd5b506106a96106a4366004614e62565b610cf2565b005b6106a9610e0c565b3480156106bf57600080fd5b506106a96106ce366004615059565b61105a565b3480156106df57600080fd5b5061046460015481565b3480156106f557600080fd5b506106a9610704366004614e62565b6112b3565b34801561071557600080fd5b5061048d61101681565b34801561072b57600080fd5b5061048d61101181565b34801561074157600080fd5b506106a9611499565b34801561075657600080fd5b506106a9612185565b34801561076b57600080fd5b5061046460025481565b34801561078157600080fd5b506106a9610790366004614e62565b6122a0565b3480156107a157600080fd5b50600a54610464565b3480156107b657600080fd5b50610464600a5481565b3480156107cc57600080fd5b5061048d61100881565b3480156107e257600080fd5b50610464600b81565b3480156107f757600080fd5b5061046460035481565b34801561080d57600080fd5b50610464600b5481565b34801561082357600080fd5b506104646123cd565b34801561083857600080fd5b506104646123d9565b34801561084d57600080fd5b5061046468056bc75e2d6310000081565b6106a961086c366004614e85565b6123e5565b34801561087d57600080fd5b50610464612c4f565b34801561089257600080fd5b5061048d61100681565b3480156108a857600080fd5b506000546105159060ff1681565b3480156108c257600080fd5b506106a96108d1366004614efd565b612c5b565b3480156108e257600080fd5b5061048d61101081565b3480156108f857600080fd5b506106a9610907366004615099565b612f2d565b34801561091857600080fd5b50610464601081565b34801561092d57600080fd5b506106a961093c36600461511a565b6136be565b34801561094d57600080fd5b5061048d61100981565b34801561096357600080fd5b5061048d61101381565b34801561097957600080fd5b506106a9613894565b34801561098e57600080fd5b506109a261099d366004615102565b6139a4565b604080516001600160a01b03998a168152978916602089015295909716948601949094526060850192909252608084015260a083015260c082015260e08101919091526101000161046e565b3480156109fa57600080fd5b50610464601181565b348015610a0f57600080fd5b50610515610a1e366004614e62565b613a08565b348015610a2f57600080fd5b50610464610a3e366004614e62565b60076020526000908152604090205481565b348015610a5c57600080fd5b5061048d61100281565b348015610a7257600080fd5b50610464610a81366004614e62565b60096020526000908152604090205481565b348015610a9f57600080fd5b50610464600a81565b348015610ab457600080fd5b506106a9613a7d565b348015610ac957600080fd5b5061048d61100381565b348015610adf57600080fd5b506106a9613b96565b348015610af457600080fd5b5061046460055481565b348015610b0a57600080fd5b506106a9613c4b565b348015610b1f57600080fd5b50610464610b2e366004614e62565b600c6020526000908152604090205481565b348015610b4c57600080fd5b50610464600481565b348015610b6157600080fd5b50610464600981565b348015610b7657600080fd5b5061048d61100081565b348015610b8c57600080fd5b50610515610b9b366004614e62565b613e38565b348015610bac57600080fd5b50610bc0610bbb366004614e62565b613eb0565b60405161046e9291906152a8565b348015610bda57600080fd5b5061046469021e19e0c9bab240000081565b60065460609060008167ffffffffffffffff811115610c1b57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c44578160200160208202803683370190505b50905060005b82811015610cdc5760068181548110610c7357634e487b7160e01b600052603260045260246000fd5b600091825260209091206008909102015482516001600160a01b0390911690839083908110610cb257634e487b7160e01b600052603260045260246000fd5b6001600160a01b039092166020928302919091019091015280610cd4816155a5565b915050610c4a565b5092915050565b610cef600860ff6154f2565b81565b6000610cfc613f5f565b6001600160a01b03831660009081526008602052604090205490915015610d6a5760405162461bcd60e51b815260206004820152601860248201527f636f6e73656e73757320616c726561647920657869737473000000000000000060448201526064015b60405180910390fd5b6001810180546001600160a01b03908116600090815260086020908152604080832054878516808552828520919091558554851684528184209390935584547fffffffffffffffffffffffff00000000000000000000000000000000000000001683179094558454935191825292909116917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591015b60405180910390a25050565b60005460ff16610e5e5760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d61565b33600090815260076020526040902054610eba5760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d61565b34610f075760405162461bcd60e51b815260206004820152601860248201527f76616c75652073686f756c64206e6f74206265207a65726f00000000000000006044820152606401610d61565b3360009081526007602052604081205490346006610f266001856154f2565b81548110610f4457634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160040154610f6091906154ba565b9050806006610f706001856154f2565b81548110610f8e57634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160040181905550336001600160a01b03167f4ab0f80899f780c0521f849ed8883e85682657aa1d8979dde42d5f347b995db63483604051610fe7929190918252602082015260400190565b60405180910390a2600154811061105657600060066110076001856154f2565b8154811061102557634e487b7160e01b600052603260045260246000fd5b60009182526020822060089182020192506110419060ff6154f2565b82600501541690506110538282614011565b50505b5050565b6000611064613f5f565b9050603082146110b65760405162461bcd60e51b815260206004820181905260248201527f766f74652061646472657373206c656e6774682073686f756c642062652034386044820152606401610d61565b60065460005b8181101561123c576111dd600d6000600684815481106110ec57634e487b7160e01b600052603260045260246000fd5b600091825260208083206008909202909101546001600160a01b03168352820192909252604001902060010180546111239061556a565b80601f016020809104026020016040519081016040528092919081815260200182805461114f9061556a565b801561119c5780601f106111715761010080835404028352916020019161119c565b820191906000526020600020905b81548152906001019060200180831161117f57829003601f168201915b505050505086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061406892505050565b1561122a5760405162461bcd60e51b815260206004820152601b60248201527f766f7465206164647265737320616c72656164792065786973747300000000006044820152606401610d61565b80611234816155a5565b9150506110bc565b5081546001600160a01b03166000908152600d60205260409020611264906001018585614c9a565b5081546040516001600160a01b03909116907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d906112a590879087906153a0565b60405180910390a250505050565b3360009081526007602052604090205461130f5760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d61565b336000818152600760205260409020546001600160a01b0383166113755760405162461bcd60e51b815260206004820152601c60248201527f6167656e7420616464726573732063616e6e6f74206265207a65726f000000006044820152606401610d61565b6001600160a01b0383166000908152600c6020526040902054156113db5760405162461bcd60e51b815260206004820152601c60248201527f6167656e74206164647265737320616c726561647920657869737473000000006044820152606401610d61565b6001600160a01b038083166000908152600d6020526040902054168015611416576001600160a01b0381166000908152600c60205260408120555b6001600160a01b038481166000818152600c60209081526040808320879055938716808352600d82529184902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016841790559251918252917fee7760cb405d3beb1072ae2e716857daa45a5dd52bc1383a21173199d32c7dee91016112a5565b33411461150e5760405162461bcd60e51b815260206004820152602d60248201527f746865206d6573736167652073656e646572206d75737420626520746865206260448201527f6c6f636b2070726f6475636572000000000000000000000000000000000000006064820152608401610d61565b60005460ff166115605760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d61565b3a156115ae5760405162461bcd60e51b815260206004820152601460248201527f6761737072696365206973206e6f74207a65726f0000000000000000000000006044820152606401610d61565b6110006001600160a01b031663c1c6450f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156115eb57600080fd5b505af11580156115ff573d6000803e3d6000fd5b5050600a546040517f940a4e450000000000000000000000000000000000000000000000000000000081526004810191909152611000925063940a4e459150602401600060405180830381600087803b15801561165b57600080fd5b505af115801561166f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116b59190810190614f31565b506116be6140cc565b6006546000808267ffffffffffffffff8111156116eb57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611714578160200160208202803683370190505b50905060005b838110156117de5761172e601060ff6154f2565b6006828154811061174f57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600501541682828151811061178257634e487b7160e01b600052603260045260246000fd5b60200260200101818152505060018282815181106117b057634e487b7160e01b600052603260045260246000fd5b602002602001015114156117cc57826117c8816155a5565b9350505b806117d6816155a5565b91505061171a565b5060008267ffffffffffffffff81111561180857634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611831578160200160208202803683370190505b5090506000805b8581101561190957600184828151811061186257634e487b7160e01b600052603260045260246000fd5b602002602001015114156118f7576006818154811061189157634e487b7160e01b600052603260045260246000fd5b60009182526020909120600890910201546001600160a01b031683836118b6816155a5565b9450815181106118d657634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b80611901816155a5565b915050611838565b50600a546040517f1cf0cc5d00000000000000000000000000000000000000000000000000000000815260009161101091631cf0cc5d9161194f9187919060040161537e565b600060405180830381600087803b15801561196957600080fd5b505af115801561197d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119c39190810190614fd2565b905060006119d7600b546004548651614159565b905060006119f48584846004546119ee91906154ba565b85614191565b90506000815167ffffffffffffffff811115611a2057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611a49578160200160208202803683370190505b5090506000825167ffffffffffffffff811115611a7657634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611a9f578160200160208202803683370190505b5090506000835167ffffffffffffffff811115611acc57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611af5578160200160208202803683370190505b5090506000845167ffffffffffffffff811115611b2257634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611b5557816020015b6060815260200190600190039081611b405790505b50905060005b8551811015611e7657600060076000888481518110611b8a57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060006006600183611bc691906154f2565b81548110611be457634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020190508060010160009054906101000a90046001600160a01b0316878481518110611c2c57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260028201548751911690879085908110611c6c57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050600d6000898581518110611cb057634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206001018054611ce69061556a565b80601f0160208091040260200160405190810160405280929190818152602001828054611d129061556a565b8015611d5f5780601f10611d3457610100808354040283529160200191611d5f565b820191906000526020600020905b815481529060010190602001808311611d4257829003601f168201915b5050505050848481518110611d8457634e487b7160e01b600052603260045260246000fd5b6020026020010181905250898381518110611daf57634e487b7160e01b600052603260045260246000fd5b602002602001015160001415611df3576103e8858481518110611de257634e487b7160e01b600052603260045260246000fd5b602002602001018181525050611e25565b8060030154858481518110611e1857634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b60108d611e336001856154f2565b81518110611e5157634e487b7160e01b600052603260045260246000fd5b602002602001018181511791508181525050505080611e6f906155a5565b9050611b5b565b50600480546040517f87909e48000000000000000000000000000000000000000000000000000000008152611000926387909e4892611ec0928a928a928a928a928a9291016152dd565b600060405180830381600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b505050506110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f2f57600080fd5b505af1158015611f43573d6000803e3d6000fd5b5050600a546040517f773b807e000000000000000000000000000000000000000000000000000000008152611010935063773b807e9250611f8891899160040161537e565b600060405180830381600087803b158015611fa257600080fd5b505af1158015611fb6573d6000803e3d6000fd5b5050505060005b8c8110156120be57600060068281548110611fe857634e487b7160e01b600052603260045260246000fd5b600091825260208083206008909202909101546001600160a01b0316808352600990915260409091205490915080158015906120265750600a548111155b156120a957612037600460ff6154f2565b8d848151811061205757634e487b7160e01b600052603260045260246000fd5b6020026020010151168d848151811061208057634e487b7160e01b600052603260045260246000fd5b6020908102919091018101919091526001600160a01b0383166000908152600990915260408120555b505080806120b6906155a5565b915050611fbd565b5060005b8c81101561213b57612129600682815481106120ee57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600802018c838151811061211c57634e487b7160e01b600052603260045260246000fd5b6020026020010151614011565b80612133816155a5565b9150506120c2565b507f46ef24241b0cc39b9df0fbf1ddfb1fde02277e0bc7fc6dc47e34d3fd828e76d2600a5460405161216f91815260200190565b60405180910390a1505050505050505050505050565b336000908152600760205260409020546121e15760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d61565b336000818152600d60205260409020546001600160a01b03166122465760405162461bcd60e51b815260206004820152601c60248201527f6167656e74206164647265737320646f6573206e6f74206578697374000000006044820152606401610d61565b6001600160a01b039081166000818152600d6020818152604080842080549096168452600c8252832083905592909152905280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b336000908152600760205260409020546122fc5760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d61565b6000612306613f5f565b90506001600160a01b03821661235e5760405162461bcd60e51b815260206004820152601a60248201527f66656520616464726573732063616e6e6f74206265207a65726f0000000000006044820152606401610d61565b6002810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038481169182179092558254604051918252909116907f2201807e0167c4a10dbdc42280df04aa7c53cde48a0cfdd96c400968bff9346390602001610e00565b610cef600460ff6154f2565b610cef600260ff6154f2565b60005460ff166124375760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d61565b6006546103e881111561248c5760405162461bcd60e51b815260206004820152601e60248201527f6d6178696d756d2063616e6469646174652073697a65207265616368656400006044820152606401610d61565b33600090815260076020526040902054156124e95760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520616c72656164792065786973747300000000000000006044820152606401610d61565b60015434101561253b5760405162461bcd60e51b815260206004820152601560248201527f6465706f736974206973206e6f7420656e6f75676800000000000000000000006044820152606401610d61565b63ffffffff84161580159061255757506103e88463ffffffff16105b6125c95760405162461bcd60e51b815260206004820152602c60248201527f636f6d6d697373696f6e54686f7573616e647468732073686f756c642062652060448201527f696e2028302c20313030302900000000000000000000000000000000000000006064820152608401610d61565b6001600160a01b0386166000908152600860205260409020541561262f5760405162461bcd60e51b815260206004820152601860248201527f636f6e73656e73757320616c72656164792065786973747300000000000000006044820152606401610d61565b6001600160a01b0386166126aa5760405162461bcd60e51b8152602060048201526024808201527f636f6e73656e73757320616464726573732073686f756c64206e6f742062652060448201527f7a65726f000000000000000000000000000000000000000000000000000000006064820152608401610d61565b6001600160a01b0385166127005760405162461bcd60e51b815260206004820152601e60248201527f66656520616464726573732073686f756c64206e6f74206265207a65726f00006044820152606401610d61565b600a5433600090815260096020526040902054106127605760405162461bcd60e51b815260206004820152600d60248201527f697420697320696e206a61696c000000000000000000000000000000000000006044820152606401610d61565b603082146127b05760405162461bcd60e51b815260206004820181905260248201527f766f74652061646472657373206c656e6774682073686f756c642062652034386044820152606401610d61565b60005b81811015612933576128d4600d6000600684815481106127e357634e487b7160e01b600052603260045260246000fd5b600091825260208083206008909202909101546001600160a01b031683528201929092526040019020600101805461281a9061556a565b80601f01602080910402602001604051908101604052809291908181526020018280546128469061556a565b80156128935780601f1061286857610100808354040283529160200191612893565b820191906000526020600020905b81548152906001019060200180831161287657829003601f168201915b505050505085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061406892505050565b156129215760405162461bcd60e51b815260206004820152601b60248201527f766f7465206164647265737320616c72656164792065786973747300000000006044820152606401610d61565b8061292b816155a5565b9150506127b3565b5060408051610100810182523381526001600160a01b03888116602080840191825289831684860190815263ffffffff8a16606086018181523460808801908152600160a08901818152600a5460c08b0190815260e08b0195865260068054808501825560009182529b516008909c027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810180549d8d167fffffffffffffffffffffffff00000000000000000000000000000000000000009e8f1617905599517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d408b018054918d16918e1691909117905596517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d418a01805491909b169b169a909a1790985591517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d42870155517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4386015594517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4485015594517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4584015593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4690920191909155835180850185529283528351601f870182900482028101820190945285845290928282019187908790819084018382808284376000920182905250939094525050338152600d60209081526040909120835181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178155838201518051919350612bb8926001850192910190614d3c565b50612bc8915083905060016154ba565b33600090815260076020526040902055612be38260016154ba565b6001600160a01b0380891660008181526008602052604090819020939093559151908816919033907fd3cecec2d6f105086150c48758f137637d34ef078dc79d93318d95dd0fc45e0990612c3e908a9034908b908b90615417565b60405180910390a450505050505050565b610cef601060ff6154f2565b3361100014612cd25760405162461bcd60e51b815260206004820152602c60248201527f746865206d73672073656e646572206d7573742062652076616c696461746f7260448201527f53657420636f6e747261637400000000000000000000000000000000000000006064820152608401610d61565b6001600160a01b03831660009081526007602052604090205480612cf65750505050565b60006006612d056001846154f2565b81548110612d2357634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020190506000816004015490506002548110158015612d5b57508360025482612d5891906154f2565b10155b15612ea65760058201546001600160a01b03871660009081526009602052604090205460049091179015612dcb576001600160a01b038716600090815260096020526040902054612dad9087906154ba565b6001600160a01b038816600090815260096020526040902055612df3565b85600a54612dd991906154ba565b6001600160a01b0388166000908152600960205260409020555b6000612dff86846154f2565b6004850181905560408051888152602081018390529192506001600160a01b038a16917f81cfec6c72eedd64db356101ba3b131efdc623de91bb003917d85a30dd79dc14910160405180910390a2600154811015612e5e576008821791505b612e688483614011565b8515612e9f576040516110029087156108fc029088906000818181858888f19350505050158015612e9d573d6000803e3d6000fd5b505b5050612f24565b612eaf836147ad565b6040516110029082156108fc029083906000818181858888f19350505050158015612ede573d6000803e3d6000fd5b5060408051828152600060208201526001600160a01b038816917f81cfec6c72eedd64db356101ba3b131efdc623de91bb003917d85a30dd79dc14910160405180910390a25b5050505b505050565b60005460ff16612f7f5760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d61565b3361100614612ff65760405162461bcd60e51b815260206004820152602a60248201527f746865206d73672073656e646572206d75737420626520676f7665726e616e6360448201527f6520636f6e7472616374000000000000000000000000000000000000000000006064820152608401610d61565b602081146130345783836040517fad23613c000000000000000000000000000000000000000000000000000000008152600401610d619291906153a0565b6130a884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600e81527f72657175697265644d617267696e00000000000000000000000000000000000060208201529150614b239050565b1561316857604080516020601f84018190048102820181019092528281526000916130eb91858580838501838280828437600092019190915250614b7c92505050565b9050600254811161316057848482600254600161310891906154ba565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610d619594939291906153e6565b60015561367b565b6131dc84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600481527f647565730000000000000000000000000000000000000000000000000000000060208201529150614b239050565b1561328757604080516020601f840181900481028201810190925282815260009161321f91858580838501838280828437600092019190915250614b7c92505050565b905080158061323057506001548110155b1561327f5784848260018060015461324891906154f2565b6040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610d619594939291906153e6565b60025561367b565b6132fb84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600e81527f76616c696461746f72436f756e7400000000000000000000000000000000000060208201529150614b239050565b1561343757604080516020601f840181900481028201810190925282815260009161333e91858580838501838280828437600092019190915250614b7c92505050565b90506005811115806133515750602a8110155b1561339457848482600660296040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610d619594939291906153e6565b61339f6003826154d2565b600b54111561342f57600b5460006133b86003846154d2565b6040517f808861f900000000000000000000000000000000000000000000000000000000815260806004820152601160848201527f6d6178416c7465726e617465436f756e7400000000000000000000000000000060a482015260248101939093526044830191909152606482015260c401610d61565b60045561367b565b6134ab84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601381527f6d6178436f6d6d697373696f6e4368616e67650000000000000000000000000060208201529150614b239050565b1561355a57604080516020601f84018190048102820181019092528281526000916134ee91858580838501838280828437600092019190915250614b7c92505050565b9050806135525784848260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610d619594939291906153e6565b60055561367b565b6135ce84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527f6d6178416c7465726e617465436f756e7400000000000000000000000000000060208201529150614b239050565b1561364557604080516020601f840181900481028201810190925282815260009161361191858580838501838280828437600092019190915250614b7c92505050565b9050600360045461362291906154d2565b81111561363d578484826000600360045461324891906154d2565b600b5561367b565b83836040517f64b4f604000000000000000000000000000000000000000000000000000000008152600401610d619291906153a0565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516136b094939291906153b4565b60405180910390a150505050565b60006136c8613f5f565b905063ffffffff8216158015906136e657506103e88263ffffffff16105b6137585760405162461bcd60e51b815260206004820152602f60248201527f636f6d6d697373696f6e54686f7573616e647468732073686f756c6420696e2060448201527f72616e67652028302c20313030302900000000000000000000000000000000006064820152608401610d61565b60008160060154600a5414613771578160030154613777565b81600701545b9050806005548463ffffffff1661378e91906154ba565b101580156137af57508263ffffffff16600554826137ac91906154ba565b10155b6138215760405162461bcd60e51b815260206004820152602d60248201527f636f6d6d697373696f6e54686f7573616e64746873206f7574206f662061646a60448201527f7573746d656e742072616e6765000000000000000000000000000000000000006064820152608401610d61565b8160060154600a541461384157600a546006830155600382015460078301555b63ffffffff83166003830181905582546040519182526001600160a01b0316907fac9d93df3796500746288181878308b427f0a9c3660ad91ca609eb525a5c22da906020015b60405180910390a2505050565b60005460ff166138e65760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d61565b336000908152600760205260409020546139425760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d61565b336000908152600760205260408120549060066139606001846154f2565b8154811061397e57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600802019050600060028260050154179050612f288282614011565b600681815481106139b457600080fd5b6000918252602090912060089091020180546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b039687169850948616969390951694919390929088565b6001600160a01b03811660009081526007602052604081205480613a2f5750600092915050565b60006006613a3e6001846154f2565b81548110613a5c57634e487b7160e01b600052603260045260246000fd5b60009182526020909120600560089092020101546011811614949350505050565b60005460ff16613acf5760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d61565b33600090815260076020526040902054613b2b5760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d61565b33600090815260076020526040812054906006613b496001846154f2565b81548110613b6757634e487b7160e01b600052603260045260246000fd5b6000918252602082206008909102019150613b84600260ff6154f2565b8260050154169050612f288282614011565b60005460ff1615613be95760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e6974000000000000006044820152606401610d61565b69021e19e0c9bab240000060015568056bc75e2d631000006002556009600455600a600555613c1b62015180426154d2565b600a55600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60005460ff16613c9d5760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610d61565b33600090815260076020526040902054613cf95760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d61565b33600090815260076020526040812054906006613d176001846154f2565b81548110613d3557634e487b7160e01b600052603260045260246000fd5b600091825260209091206008909102016005810154909150600b811614613d9e5760405162461bcd60e51b815260206004820152601f60248201527f63616e64696461746520737461747573206973206e6f7420636c6561726564006044820152606401610d61565b6004810154613dac836147ad565b600254811115613e0957600060025482613dc691906154f2565b9050613dd23382614b81565b6002546040516110029180156108fc02916000818181858888f19350505050158015613e02573d6000803e3d6000fd5b5050505050565b6040516110029082156108fc029083906000818181858888f19350505050158015611053573d6000803e3d6000fd5b6001600160a01b03811660009081526007602052604081205480613e5f5750600092915050565b60006006613e6e6001846154f2565b81548110613e8c57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600802016005015490506010811660101492505050919050565b600d60205260009081526040902080546001820180546001600160a01b039092169291613edc9061556a565b80601f0160208091040260200160405190810160405280929190818152602001828054613f089061556a565b8015613f555780601f10613f2a57610100808354040283529160200191613f55565b820191906000526020600020905b815481529060010190602001808311613f3857829003601f168201915b5050505050905082565b3360009081526007602052604081205480613fd25750336000908152600c602052604090205480613fd25760405162461bcd60e51b815260206004820152601860248201527f63616e64696461746520646f6573206e6f7420657869737400000000000000006044820152606401610d61565b6006613fdf6001836154f2565b81548110613ffd57634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020191505090565b6005820154818114612f285760058301829055825460408051838152602081018590526001600160a01b03909216917f4b35b40ad96adb69950ee8e04201a2258550524199e2fcf2b5d3830023ff99ce9101613887565b81518151600091600191811480831461408457600092506140c2565b600160208701838101602088015b6002848385100114156140bd5780518351146140b15760009650600093505b60209283019201614092565b505050505b5090949350505050565b60006140db62015180426154d2565b9050600a5481116141545760405162461bcd60e51b815260206004820152602d60248201527f6e6f7420616c6c6f77656420746f207475726e20726f756e642c20776169742060448201527f666f72206d6f72652074696d65000000000000000000000000000000000000006064820152608401610d61565b600a55565b600082821161416b5760009350614189565b61417584846154ba565b8210156141895761418683836154f2565b93505b509192915050565b60608183116142085760405162461bcd60e51b815260206004820152602860248201527f636f756e742073686f756c642062652067726561746572207468616e20736f7260448201527f746564436f756e740000000000000000000000000000000000000000000000006064820152608401610d61565b84518061421557506147a5565b600080828610156142325761422b6001846154f2565b9050614236565b8295505b80821015614574578751829082906000908b908490811061426757634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008a848151811061429357634e487b7160e01b600052603260045260246000fd5b602002602001015190505b828410156144be575b82841080156142dc5750808b84815181106142d257634e487b7160e01b600052603260045260246000fd5b6020026020010151105b156142f3576142ec6001846154f2565b92506142a7565b8b838151811061431357634e487b7160e01b600052603260045260246000fd5b60200260200101518c858151811061433b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250508a838151811061437b57634e487b7160e01b600052603260045260246000fd5b60200260200101518b85815181106143a357634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b82841080156143e65750808b85815181106143db57634e487b7160e01b600052603260045260246000fd5b602002602001015110155b156143fd576143f68460016154ba565b93506143b0565b8b848151811061441d57634e487b7160e01b600052603260045260246000fd5b60200260200101518c848151811061444557634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250508a848151811061448557634e487b7160e01b600052603260045260246000fd5b60200260200101518b84815181106144ad57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505061429e565b818c85815181106144df57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050808b858151811061452057634e487b7160e01b600052603260045260246000fd5b6020908102919091010152838a8110156145465761453f8160016154ba565b965061456a565b8a811115614560576145596001826154f2565b955061456a565b5050505050614574565b5050505050614236565b60006145816001886154f2565b90505b61458e86886154f2565b811061478157600060015b82811161460c578982815181106145c057634e487b7160e01b600052603260045260246000fd5b60200260200101518a82815181106145e857634e487b7160e01b600052603260045260246000fd5b602002602001015110156145fa578091505b80614604816155a5565b915050614599565b5081811461476e5789818151811061463457634e487b7160e01b600052603260045260246000fd5b60200260200101518a838151811061465c57634e487b7160e01b600052603260045260246000fd5b60200260200101518b848151811061468457634e487b7160e01b600052603260045260246000fd5b602002602001018c84815181106146ab57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0393841660209182029290920101529116905288518990829081106146e757634e487b7160e01b600052603260045260246000fd5b602002602001015189838151811061470f57634e487b7160e01b600052603260045260246000fd5b60200260200101518a848151811061473757634e487b7160e01b600052603260045260246000fd5b602002602001018b848151811061475e57634e487b7160e01b600052603260045260246000fd5b6020908102919091010191909152525b508061477981615535565b915050614584565b50600061478e87856154f2565b9050801561479d578089510389525b889450505050505b949350505050565b600060066147bc6001846154f2565b815481106147da57634e487b7160e01b600052603260045260246000fd5b60009182526020822060016008909202019081015481546040519294506001600160a01b03918216939116917f17b07b19259c7122b0e5b0e3a4ca4ebf0b240e93e26cb44cff9addc7dbf9e99c9190a380546001600160a01b039081166000908152600d602052604090205416156148795780546001600160a01b039081166000908152600d60209081526040808320549093168252600c9052908120555b80546001600160a01b039081166000908152600760209081526040808320839055600180860154851684526008835281842084905585549094168352600d909152812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155916148ef90830182614db0565b50506006548214614a6e576006805461490a906001906154f2565b8154811061492857634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600660018461494591906154f2565b8154811061496357634e487b7160e01b600052603260045260246000fd5b600091825260208083208454600893840290910180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0393841617825560018088015481840180548416918616919091179055600280890154908401805490931690851617909155600380880154908301556004808801549083015560058088015490830155600680880154908301556007968701549187019190915586548216855294825260408085208890559486015481168452918152838320869055845482168352600d9052919020541615614a6e5780546001600160a01b039081166000908152600d60209081526040808320549093168252600c9052208290555b6006805480614a8d57634e487b7160e01b600052603160045260246000fd5b60008281526020812060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018054821690556002820180549091169055600381018290556004810182905560058101829055600681018290556007015590555050565b600081604051602001614b36919061528c565b6040516020818303038152906040528051906020012083604051602001614b5d919061528c565b6040516020818303038152906040528051906020012014905092915050565b015190565b80471015614bd15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610d61565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114614c1e576040519150601f19603f3d011682016040523d82523d6000602084013e614c23565b606091505b5050905080612f285760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610d61565b828054614ca69061556a565b90600052602060002090601f016020900481019282614cc85760008555614d2c565b82601f10614cff578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555614d2c565b82800160010185558215614d2c579182015b82811115614d2c578235825591602001919060010190614d11565b50614d38929150614ded565b5090565b828054614d489061556a565b90600052602060002090601f016020900481019282614d6a5760008555614d2c565b82601f10614d8357805160ff1916838001178555614d2c565b82800160010185558215614d2c579182015b82811115614d2c578251825591602001919060010190614d95565b508054614dbc9061556a565b6000825580601f10614dcc575050565b601f016020900490600052602060002090810190614dea9190614ded565b50565b5b80821115614d385760008155600101614dee565b60008083601f840112614e13578182fd5b50813567ffffffffffffffff811115614e2a578182fd5b602083019150836020828501011115614e4257600080fd5b9250929050565b803563ffffffff81168114614e5d57600080fd5b919050565b600060208284031215614e73578081fd5b8135614e7e8161560a565b9392505050565b600080600080600060808688031215614e9c578081fd5b8535614ea78161560a565b94506020860135614eb78161560a565b9350614ec560408701614e49565b9250606086013567ffffffffffffffff811115614ee0578182fd5b614eec88828901614e02565b969995985093965092949392505050565b600080600060608486031215614f11578283fd5b8335614f1c8161560a565b95602085013595506040909401359392505050565b60006020808385031215614f43578182fd5b825167ffffffffffffffff811115614f59578283fd5b8301601f81018513614f69578283fd5b8051614f7c614f7782615496565b615447565b80828252848201915084840188868560051b8701011115614f9b578687fd5b8694505b83851015614fc6578051614fb28161560a565b835260019490940193918501918501614f9f565b50979650505050505050565b60006020808385031215614fe4578182fd5b825167ffffffffffffffff811115614ffa578283fd5b8301601f8101851361500a578283fd5b8051615018614f7782615496565b80828252848201915084840188868560051b8701011115615037578687fd5b8694505b83851015614fc657805183526001949094019391850191850161503b565b6000806020838503121561506b578182fd5b823567ffffffffffffffff811115615081578283fd5b61508d85828601614e02565b90969095509350505050565b600080600080604085870312156150ae578384fd5b843567ffffffffffffffff808211156150c5578586fd5b6150d188838901614e02565b909650945060208701359150808211156150e9578384fd5b506150f687828801614e02565b95989497509550505050565b600060208284031215615113578081fd5b5035919050565b60006020828403121561512b578081fd5b614e7e82614e49565b6000815180845260208085019450808401835b8381101561516c5781516001600160a01b031687529582019590820190600101615147565b509495945050505050565b600081518084526020808501808196508360051b81019150828601855b858110156151be5782840389526151ac848351615242565b98850198935090840190600101615194565b5091979650505050505050565b6000815180845260208085019450808401835b8381101561516c578151875295820195908201906001016151de565b81835281816020850137506000806020838501015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000815180845261525a816020860160208601615509565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161529e818460208701615509565b9190910192915050565b6001600160a01b03831681526040602082015260006147a56040830184615242565b602081526000614e7e6020830184615134565b60c0815260006152f060c0830189615134565b602083820381850152615303828a615134565b84810360408601528851808252828a01935090820190845b818110156153405784516001600160a01b03168352938301939183019160010161531b565b5050848103606086015261535481896151cb565b92505050828103608084015261536a8186615177565b9150508260a0830152979650505050505050565b6040815260006153916040830185615134565b90508260208301529392505050565b6020815260006147a56020830184866151fa565b6040815260006153c86040830186886151fa565b82810360208401526153db8185876151fa565b979650505050505050565b6080815260006153fa6080830187896151fa565b602083019590955250604081019290925260609091015292915050565b63ffffffff8516815283602082015260606040820152600061543d6060830184866151fa565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561548e5761548e6155f4565b604052919050565b600067ffffffffffffffff8211156154b0576154b06155f4565b5060051b60200190565b600082198211156154cd576154cd6155de565b500190565b6000826154ed57634e487b7160e01b81526012600452602481fd5b500490565b600082821015615504576155046155de565b500390565b60005b8381101561552457818101518382015260200161550c565b838111156110535750506000910152565b600081615544576155446155de565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600181811c9082168061557e57607f821691505b6020821081141561559f57634e487b7160e01b600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155d7576155d76155de565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114614dea57600080fdfea26469706673582212203dd7c709992deacda96474116a7d558267b6f335e50a2fe25d2b9cc81d5f5db664736f6c63430008040033 \ No newline at end of file diff --git a/core/systemcontracts/hermes/pigeon/ValidatorContract b/core/systemcontracts/hermes/pigeon/ValidatorContract index a8ff60df7..41c32fc0b 100644 --- a/core/systemcontracts/hermes/pigeon/ValidatorContract +++ b/core/systemcontracts/hermes/pigeon/ValidatorContract @@ -1 +1 @@ -6080604052600436106103855760003560e01c80638c5d749d116101d1578063b7ab4db511610102578063dc19b93e116100a0578063eb57e2021161006f578063eb57e20214610969578063f340fa0114610989578063f9a2bbc71461099c578063facd743b146109b257600080fd5b8063dc19b93e14610914578063dc927faf14610929578063e1c7392a1461093f578063e3b77a341461095457600080fd5b8063c7904091116100dc578063c7904091146108bc578063c81b1662146108d2578063cb75a592146108e8578063d04932e1146108fe57600080fd5b8063b7ab4db514610872578063c1c6450f14610887578063c32968b91461089c57600080fd5b8063a730c8911161016f578063ac43175111610149578063ac431751146107f9578063ad3c9da614610819578063b117172414610846578063b3d676f31461085c57600080fd5b8063a730c891146107b3578063a78abc16146107c9578063aa82dce1146107e357600080fd5b8063940a4e45116101ab578063940a4e4514610745578063983443df146107655780639dc092621461077b578063a5422d5c1461079157600080fd5b80638c5d749d146106f95780639369d7de1461070e57806393f2d4041461072357600080fd5b806334bc99b3116102b65780635d25e51d11610254578063783028a911610223578063783028a9146106925780637f05b9ef146106a857806387909e48146106c45780638c128a39146106e457600080fd5b80635d25e51d146106135780635f640628146106295780636969a25c1461063e5780636f816a201461067257600080fd5b806343756e5c1161029057806343756e5c146105b15780634392b201146105c757806350fe7408146105dd578063565c56b3146105f357600080fd5b806334bc99b31461056f5780633b071dcc146105865780633b7681601461059b57600080fd5b8063239cba4a116103235780632eae3523116102fd5780632eae3523146104e7578063321d398a146104fc57806332a16db21461052c578063335e6e2d1461054f57600080fd5b8063239cba4a1461049b57806325ee13e2146104bb5780632a5d69b2146104d157600080fd5b80630ac168a11161035f5780630ac168a11461042b5780630f43a6771461044f578063109364b11461046557806314c1e1f71461048557600080fd5b8063042295e1146103cd57806304c4fec61461040057806304e9e3a41461041557600080fd5b366103c85734156103c65760405134815233907ff11e547d796cc64acdf758e7cee90439494fd886a19159454aa61e473fdbafef9060200160405180910390a25b005b600080fd5b3480156103d957600080fd5b506103e361101781565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561040c57600080fd5b506103c66109ea565b34801561042157600080fd5b506103e361100781565b34801561043757600080fd5b5061044160015481565b6040519081526020016103f7565b34801561045b57600080fd5b5061044160085481565b34801561047157600080fd5b50610441610480366004615577565b610b2d565b34801561049157600080fd5b506103e361100481565b3480156104a757600080fd5b506103c66104b6366004615593565b610bb7565b3480156104c757600080fd5b506103e361100581565b3480156104dd57600080fd5b506103e361101281565b3480156104f357600080fd5b50610441600a81565b34801561050857600080fd5b5061051c610517366004615784565b6110b0565b60405190151581526020016103f7565b34801561053857600080fd5b5061054161114e565b6040516103f79291906158f9565b34801561055b57600080fd5b506103e361056a366004615784565b6116bb565b34801561057b57600080fd5b5061044162a0668081565b34801561059257600080fd5b506105416116e5565b3480156105a757600080fd5b506103e361101481565b3480156105bd57600080fd5b506103e361100181565b3480156105d357600080fd5b5061044160045481565b3480156105e957600080fd5b506103e361101681565b3480156105ff57600080fd5b5061044161060e366004615577565b611936565b34801561061f57600080fd5b506103e361101181565b34801561063557600080fd5b50610441600181565b34801561064a57600080fd5b5061065e610659366004615784565b6119a2565b6040516103f798979695949392919061588d565b34801561067e57600080fd5b506103c661068d3660046156be565b611a91565b34801561069e57600080fd5b506103e361100881565b3480156106b457600080fd5b506104416729a2241af62c000081565b3480156106d057600080fd5b506103c66106df3660046155c7565b611cef565b3480156106f057600080fd5b506104416123b3565b34801561070557600080fd5b50610441612422565b34801561071a57600080fd5b506103c661243c565b34801561072f57600080fd5b50610738612565565b6040516103f791906158e6565b34801561075157600080fd5b50610738610760366004615784565b612655565b34801561077157600080fd5b5061044160025481565b34801561078757600080fd5b506103e361100681565b34801561079d57600080fd5b506107a6612e1c565b6040516103f791906159e7565b3480156107bf57600080fd5b506104416125a781565b3480156107d557600080fd5b5060005461051c9060ff1681565b3480156107ef57600080fd5b506103e361101081565b34801561080557600080fd5b506103c6610814366004615727565b612e3b565b34801561082557600080fd5b50610441610834366004615577565b60056020526000908152604090205481565b34801561085257600080fd5b506103e361100981565b34801561086857600080fd5b506103e361101381565b34801561087e57600080fd5b506107386133e4565b34801561089357600080fd5b506103c66134da565b3480156108a857600080fd5b506103c66108b7366004615577565b613728565b3480156108c857600080fd5b5061044160075481565b3480156108de57600080fd5b506103e361100281565b3480156108f457600080fd5b50610441600a5481565b34801561090a57600080fd5b5061044160065481565b34801561092057600080fd5b506107386137dd565b34801561093557600080fd5b506103e361100381565b34801561094b57600080fd5b506103c66138cc565b34801561096057600080fd5b50610738613b74565b34801561097557600080fd5b506103c6610984366004615577565b613cc6565b6103c6610997366004615577565b613f68565b3480156109a857600080fd5b506103e361100081565b3480156109be57600080fd5b5061051c6109cd366004615577565b6001600160a01b0316600090815260056020526040902054151590565b60006109f533610b2d565b905060008111610a4c5760405162461bcd60e51b815260206004820152600f60248201527f6e6f7420612076616c696461746f72000000000000000000000000000000000060448201526064015b60405180910390fd5b6003610a59600183615b1f565b81548110610a7757634e487b7160e01b600052603260045260246000fd5b90600052602060002090600802016007015460001415610ad95760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420696e2054656d706f72617279204d61696e74656e616e6365000000006044820152606401610a43565b610b2a6003610ae9600184615b1f565b81548110610b0757634e487b7160e01b600052603260045260246000fd5b60009182526020909120600160089092020101546001600160a01b0316826141f1565b50565b600354600090815b81811015610bad57836001600160a01b031660038281548110610b6857634e487b7160e01b600052603260045260246000fd5b60009182526020909120600890910201546001600160a01b03161415610b9b57610b93816001615ad4565b949350505050565b80610ba581615bba565b915050610b35565b5060009392505050565b3361100114610c2e5760405162461bcd60e51b815260206004820152602560248201527f746865206d73672073656e646572206d75737420626520736c61736820636f6e60448201527f74726163740000000000000000000000000000000000000000000000000000006064820152608401610a43565b6001600160a01b03831660009081526005602052604090205480610c525750505050565b610c5d600182615b1f565b9050600060038281548110610c8257634e487b7160e01b600052603260045260246000fd5b60009182526020822060046008909202010154600354909250610ca790600190615b1f565b905080610cee57600060038481548110610cd157634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160040181905550505050505050565b600060038481548110610d1157634e487b7160e01b600052603260045260246000fd5b6000918252602091829020600890910201546040518581526001600160a01b03909116925082917f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70910160405180910390a26001600160a01b038716600090815260056020526040812055600354610d8b90600190615b1f565b8414610f065760038054610da190600190615b1f565b81548110610dbf57634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160038581548110610dee57634e487b7160e01b600052603260045260246000fd5b60009182526020909120825460089092020180546001600160a01b039283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178255600180850154908301805491851691831691909117905560028085015490830180549190941691161790915560038083015490820155600480830154908201556005808301805491830191610e8890615b85565b610e9392919061539f565b5060068281015490820155600791820154910155610eb2846001615ad4565b6005600060038781548110610ed757634e487b7160e01b600052603260045260246000fd5b60009182526020808320600160089093020191909101546001600160a01b031683528201929092526040019020555b6003805480610f2557634e487b7160e01b600052603160045260246000fd5b60008281526020812060086000199093019283020180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018054821690556002820180549091169055600381018290556004810182905590610f93600583018261542a565b5060006006820181905560079091018190559155610fb18385615aec565b905080156110245760035460005b81811015611021578260038281548110610fe957634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160040160008282546110099190615ad4565b9091555081905061101981615bba565b915050610fbf565b50505b6040517fa9955b400000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101889052604481018790526110059063a9955b4090606401600060405180830381600087803b15801561108e57600080fd5b505af11580156110a2573d6000803e3d6000fd5b505050505050505050505050565b6000816110bf57506000919050565b600060036110ce600185615b1f565b815481106110ec57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201905060006111066123b3565b90508160070154600014158061111d575060018111155b8061112a57508060085410155b806111355750600854155b15611144575060009392505050565b5060019392505050565b600354600854606091829160009083906111785761116a613b74565b9050805191508192506113ed565b60095460005b8181101561124157600060056000600984815481106111ad57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020549050801580159061121f575060036111eb600183615b1f565b8154811061120957634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600701546000145b156112305761122d85615bba565b94505b5061123a81615bba565b905061117e565b508267ffffffffffffffff81111561126957634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611292578160200160208202803683370190505b5091506000805b828110156113e457600060056000600984815481106112c857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020549050801580159061133a57506003611306600183615b1f565b8154811061132457634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600701546000145b156113d357600361134c600183615b1f565b8154811061136a57634e487b7160e01b600052603260045260246000fd5b60009182526020909120600160089092020101546001600160a01b0316858461139281615bba565b9550815181106113b257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b506113dd81615bba565b9050611299565b50600854945050505b818311156113f9578192505b60008367ffffffffffffffff81111561142257634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561144b578160200160208202803683370190505b50905060008467ffffffffffffffff81111561147757634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156114aa57816020015b60608152602001906001900390816114955790505b5090506000805b86821080156114bf57508581105b156116ad576000600560008784815181106114ea57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060036001826115249190615b1f565b8154811061154257634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160010160009054906101000a90046001600160a01b031685848151811061158757634e487b7160e01b600052603260045260246000fd5b6001600160a01b039092166020928302919091019091015260036115ac600183615b1f565b815481106115ca57634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160050180546115e690615b85565b80601f016020809104026020016040519081016040528092919081815260200182805461161290615b85565b801561165f5780601f106116345761010080835404028352916020019161165f565b820191906000526020600020905b81548152906001019060200180831161164257829003601f168201915b505050505084848151811061168457634e487b7160e01b600052603260045260246000fd5b60200260200101819052508261169990615bba565b925050806116a690615bba565b90506114b1565b509197909650945050505050565b600981815481106116cb57600080fd5b6000918252602090912001546001600160a01b0316905081565b600354606090819060008167ffffffffffffffff81111561171657634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561173f578160200160208202803683370190505b50905060008267ffffffffffffffff81111561176b57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561179e57816020015b60608152602001906001900390816117895790505b50905060005b8381101561192b57600381815481106117cd57634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160010160009054906101000a90046001600160a01b031683828151811061181257634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250506003818154811061185357634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600501805461186f90615b85565b80601f016020809104026020016040519081016040528092919081815260200182805461189b90615b85565b80156118e85780601f106118bd576101008083540402835291602001916118e8565b820191906000526020600020905b8154815290600101906020018083116118cb57829003601f168201915b505050505082828151811061190d57634e487b7160e01b600052603260045260246000fd5b6020026020010181905250808061192390615bba565b9150506117a4565b509094909350915050565b6001600160a01b0381166000908152600560205260408120548061195d5750600092915050565b600361196a600183615b1f565b8154811061198857634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160040154915050919050565b600381815481106119b257600080fd5b60009182526020909120600890910201805460018201546002830154600384015460048501546005860180546001600160a01b0396871698509486169695909316949193909290611a0290615b85565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2e90615b85565b8015611a7b5780601f10611a5057610100808354040283529160200191611a7b565b820191906000526020600020905b815481529060010190602001808311611a5e57829003601f168201915b5050505050908060060154908060070154905088565b334114611b065760405162461bcd60e51b815260206004820152602d60248201527f746865206d6573736167652073656e646572206d75737420626520746865206260448201527f6c6f636b2070726f6475636572000000000000000000000000000000000000006064820152608401610a43565b60005460ff16611b585760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610a43565b3a15611ba65760405162461bcd60e51b815260206004820152601460248201527f6761737072696365206973206e6f74207a65726f0000000000000000000000006044820152606401610a43565b828114611bf55760405162461bcd60e51b815260206004820152601060248201527f6c656e677468206e6f7420657175616c000000000000000000000000000000006044820152606401610a43565b60005b83811015611ce857600060056000878785818110611c2657634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611c3b9190615577565b6001600160a01b0316815260208101919091526040016000205490508015611cd757838383818110611c7d57634e487b7160e01b600052603260045260246000fd5b905060200201356003600183611c939190615b1f565b81548110611cb157634e487b7160e01b600052603260045260246000fd5b90600052602060002090600802016006016000828254611cd19190615ad4565b90915550505b50611ce181615bba565b9050611bf8565b5050505050565b3361100514611d665760405162461bcd60e51b815260206004820152602960248201527f746865206d73672073656e646572206d7573742062652063616e64696461746560448201527f20636f6e747261637400000000000000000000000000000000000000000000006064820152608401610a43565b611d788b8b8b8b8b8b8b8b8b8b614372565b87611d82576123a6565b6008819055611d918989614781565b600354600090895b81831015611e06576005600060038581548110611dc657634e487b7160e01b600052603260045260246000fd5b60009182526020808320600160089093020191909101546001600160a01b0316835282019290925260400181205582611dfe81615bba565b935050611d99565b8092505b81831015611ec3576003805480611e3157634e487b7160e01b600052603160045260246000fd5b60008281526020812060086000199093019283020180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018054821690556002820180549091169055600381018290556004810182905590611e9f600583018261542a565b50600060068201819055600790910155905582611ebb81615bba565b935050611e0a565b600092505b8083101561237957611f3360405180610100016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016060815260200160008152602001600081525090565b8e8e85818110611f5357634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611f689190615577565b6001600160a01b031681528c8c85818110611f9357634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611fa89190615577565b6001600160a01b031660208201528a8a85818110611fd657634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611feb9190615577565b6001600160a01b0316604082015288888581811061201957634e487b7160e01b600052603260045260246000fd5b60200291909101356060830152506000608082015286868581811061204e57634e487b7160e01b600052603260045260246000fd5b90506020028101906120609190615a71565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060a086019490945250505060c0820181905260e082015282841061222f576003805460018101825560009190915281517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600890920291820180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b039384161782556020808601517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c86018054841691861691909117905560408601517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d86018054909316941693909317905560608401517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85e84015560808401517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85f84015560a0840151805185949293612213937fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f86001920190615464565b5060c0820151816006015560e08201518160070155505061230a565b806003858154811061225157634e487b7160e01b600052603260045260246000fd5b6000918252602091829020835160089092020180546001600160a01b039283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825584840151600183018054918516918316919091179055604085015160028301805491909416911617909155606083015160038201556080830151600482015560a0830151805191926122f292600585019290910190615464565b5060c0820151600682015560e0909101516007909101555b612315846001615ad4565b600560008f8f8881811061233957634e487b7160e01b600052603260045260246000fd5b905060200201602081019061234e9190615577565b6001600160a01b031681526020810191909152604001600020555061237283615bba565b9250611ec8565b6040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf90600090a15050505b5050505050505050505050565b60035460009081805b8281101561241b57600381815481106123e557634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600701546000141561240b5761240882615bba565b91505b61241481615bba565b90506123bc565b5092915050565b6000600a54600014156124355750600190565b50600a5490565b600061244733610b2d565b9050600081116124995760405162461bcd60e51b815260206004820152600f60248201527f6e6f7420612076616c696461746f7200000000000000000000000000000000006044820152606401610a43565b6124a2816110b0565b6125145760405162461bcd60e51b815260206004820152602360248201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e6160448201527f6e636500000000000000000000000000000000000000000000000000000000006064820152608401610a43565b610b2a6003612524600184615b1f565b8154811061254257634e487b7160e01b600052603260045260246000fd5b60009182526020909120600160089092020101546001600160a01b031682614929565b60035460609060008167ffffffffffffffff81111561259457634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156125bd578160200160208202803683370190505b50905060005b8281101561241b57600381815481106125ec57634e487b7160e01b600052603260045260246000fd5b600091825260209091206008909102015482516001600160a01b039091169083908390811061262b57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909216602092830291909101909101528061264d81615bba565b9150506125c3565b606033611005146126ce5760405162461bcd60e51b815260206004820152602960248201527f746865206d73672073656e646572206d7573742062652063616e64696461746560448201527f20636f6e747261637400000000000000000000000000000000000000000000006064820152608401610a43565b60035460009081908190815b818110156127825760006003828154811061270557634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201905060006064600254836004015461272b9190615b00565b6127359190615aec565b90506127418187615ad4565b9550808260040160008282546127579190615b1f565b9091555050600682015461276b9086615ad4565b94505050808061277a90615bba565b9150506126da565b506110026001600160a01b031663631cbe3c846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156127c057600080fd5b505af11580156127d4573d6000803e3d6000fd5b50505050506000826000146127eb576006546127ee565b60005b90508167ffffffffffffffff81111561281757634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612840578160200160208202803683370190505b50955060008267ffffffffffffffff81111561286c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612895578160200160208202803683370190505b50905060008080805b86811015612b39576000600382815481106128c957634e487b7160e01b600052603260045260246000fd5b6000918252602090912060089091020180548d519192506001600160a01b0316908d908490811061290a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0390921660209283029190910190910152600481015493508315612b2657600281015460038201546001600160a01b039091169b506000906103e8906129579087615b00565b6129619190615aec565b9050808511156129d7576129758186615b1f565b87848151811061299557634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508683815181106129c157634e487b7160e01b600052603260045260246000fd5b6020026020010151866129d49190615ad4565b95505b60006004830181905560646129ec8a84615b00565b6129f69190615aec565b9050612a028183615b1f565b9150612a0e8186615ad4565b945060008d6001600160a01b03166108fc849081150290604051600060405180830381858888f1935050505090508015612ab4578d6001600160a01b03168460000160009054906101000a90046001600160a01b03166001600160a01b03167f5f05434e85dc7eb0d20406bd66f9b9c92a6d4d710b8cffeb61176632c83974d3858a604051612aa7929190918252602082015260400190565b60405180910390a3612b22565b8d6001600160a01b03168460000160009054906101000a90046001600160a01b03166001600160a01b03167fa49797d31ee4d8d18eeb937551b21f754dd96d6e3922324d5c5ba4522ebc45bc858a604051612b19929190918252602082015260400190565b60405180910390a35b5050505b5080612b3181615bba565b91505061289e565b508015612da45760005b600354811015612da257600060038281548110612b7057634e487b7160e01b600052603260045260246000fd5b60009182526020918290206040805161010081018252600890930290910180546001600160a01b0390811684526001820154811694840194909452600281015490931690820152600382015460608201526004820154608082015260058201805491929160a084019190612be390615b85565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0f90615b85565b8015612c5c5780601f10612c3157610100808354040283529160200191612c5c565b820191906000526020600020905b815481529060010190602001808311612c3f57829003601f168201915b505050505081526020016006820154815260200160078201548152505090508060c00151600014612d8f576000898260c0015185612c9a9190615b00565b612ca49190615aec565b9050600082604001516001600160a01b03166108fc839081150290604051600060405180830381858888f1935050505090508015612d365782604001516001600160a01b031683600001516001600160a01b03167f25979a26e110be0826acf11a91551d5b1a5d7d584c2a44c916b39127085e303884604051612d2991815260200190565b60405180910390a3612d8c565b82604001516001600160a01b031683600001516001600160a01b03167fee77a994024d311f481abd835e6e71b8c5cadb26f57e1ac81b16dd6ceb76cc3184604051612d8391815260200190565b60405180910390a35b50505b5080612d9a81615bba565b915050612b43565b505b6110106001600160a01b03166374873a3d848c878f6040518563ffffffff1660e01b8152600401612dd793929190615988565b6000604051808303818588803b158015612df057600080fd5b505af1158015612e04573d6000803e3d6000fd5b50506000600455505050505050505050505050919050565b6040518061020001604052806101d48152602001615c2b6101d4913981565b60005460ff16612e8d5760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610a43565b3361100614612f045760405162461bcd60e51b815260206004820152602a60248201527f746865206d73672073656e646572206d75737420626520676f7665726e616e6360448201527f6520636f6e7472616374000000000000000000000000000000000000000000006064820152608401610a43565b60208114612f425783836040517fad23613c000000000000000000000000000000000000000000000000000000008152600401610a439291906159fa565b612fb684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601b81527f626c6f636b526577617264496e63656e7469766550657263656e740000000000602082015291506149a09050565b1561304a57604080516020601f8401819004810282018101909252828152600091612ff9918585808385018382808284376000920191909152506149f992505050565b9050606481111561304257848482600060646040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610a43959493929190615a40565b6002556133a1565b6130be84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527f766f746552657761726450657263656e74000000000000000000000000000000602082015291506149a09050565b1561315257604080516020601f8401819004810282018101909252828152600091613101918585808385018382808284376000920191909152506149f992505050565b9050606481111561314a57848482600060646040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610a43959493929190615a40565b6006556133a1565b6131c684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601481527f6d61696e7461696e536c61736850657263656e74000000000000000000000000602082015291506149a09050565b1561325a57604080516020601f8401819004810282018101909252828152600091613209918585808385018382808284376000920191909152506149f992505050565b9050606481111561325257848482600060646040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610a43959493929190615a40565b6007556133a1565b6132ce84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81527f7475726e4c656e67746800000000000000000000000000000000000000000000602082015291506149a09050565b1561336b57604080516020601f8401819004810282018101909252828152600091613311918585808385018382808284376000920191909152506149f992505050565b90508015806133205750600981115b1561336357848482600160096040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610a43959493929190615a40565b600a556133a1565b83836040517f64b4f604000000000000000000000000000000000000000000000000000000008152600401610a439291906159fa565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516133d69493929190615a0e565b60405180910390a150505050565b60035460609060008167ffffffffffffffff81111561341357634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561343c578160200160208202803683370190505b50905060005b8281101561241b576003818154811061346b57634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160010160009054906101000a90046001600160a01b03168282815181106134b057634e487b7160e01b600052603260045260246000fd5b6001600160a01b0390921660209283029190910190910152806134d281615bba565b915050613442565b33611005146135515760405162461bcd60e51b815260206004820152602960248201527f746865206d73672073656e646572206d7573742062652063616e64696461746560448201527f20636f6e747261637400000000000000000000000000000000000000000000006064820152608401610a43565b60035460008167ffffffffffffffff81111561357d57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156135a6578160200160208202803683370190505b5090506000805b8381101561368957600381815481106135d657634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160070154600014613679576003818154811061361057634e487b7160e01b600052603260045260246000fd5b60009182526020909120600160089092020101546001600160a01b0316838361363881615bba565b94508151811061365857634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61368281615bba565b90506135ad565b5060005b81811015613722576137128382815181106136b857634e487b7160e01b600052603260045260246000fd5b6020026020010151600560008685815181106136e457634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020546141f1565b61371b81615bba565b905061368d565b50505050565b336110011461379f5760405162461bcd60e51b815260206004820152602560248201527f746865206d73672073656e646572206d75737420626520736c61736820636f6e60448201527f74726163740000000000000000000000000000000000000000000000000000006064820152608401610a43565b6001600160a01b038116600090815260056020526040902054806137c1575050565b6137ca816110b0565b156137d9576137d98282614929565b5050565b60095460609060008167ffffffffffffffff81111561380c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015613835578160200160208202803683370190505b50905060005b8281101561241b576009818154811061386457634e487b7160e01b600052603260045260246000fd5b9060005260206000200160009054906101000a90046001600160a01b03168282815181106138a257634e487b7160e01b600052603260045260246000fd5b6001600160a01b0390921660209283029190910190910152806138c481615bba565b91505061383b565b60005460ff161561391f5760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e6974000000000000006044820152606401610a43565b6000806139466040518061020001604052806101d48152602001615c2b6101d491396149fe565b91509150806139bd5760405162461bcd60e51b815260206004820152602160248201527f6661696c656420746f20706172736520696e69742076616c696461746f72536560448201527f74000000000000000000000000000000000000000000000000000000000000006064820152608401610a43565b815160005b81811015613b2b5760038482815181106139ec57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151825460018082018555600094855293839020825160089092020180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b039384161782558385015195820180548216968416969096179095556040830151600282018054909616921691909117909355606081015160038401556080810151600484015560a08101518051919392613aa292600585019290910190615464565b5060c0820151600682015560e090910151600790910155613ac4816001615ad4565b60056000868481518110613ae857634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080613b2390615bba565b9150506139c2565b50506729a2241af62c00006001908155600a6002819055819055600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790555050565b6003546060906000613b846123b3565b905060008167ffffffffffffffff811115613baf57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015613bd8578160200160208202803683370190505b5090506000805b84811015613cbc5760038181548110613c0857634e487b7160e01b600052603260045260246000fd5b90600052602060002090600802016007015460001415613cac5760038181548110613c4357634e487b7160e01b600052603260045260246000fd5b60009182526020909120600160089092020101546001600160a01b03168383613c6b81615bba565b945081518110613c8b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b613cb581615bba565b9050613bdf565b5090949350505050565b3361100114613d3d5760405162461bcd60e51b815260206004820152602560248201527f746865206d73672073656e646572206d75737420626520736c61736820636f6e60448201527f74726163740000000000000000000000000000000000000000000000000000006064820152608401610a43565b6001600160a01b03811660009081526005602052604090205480613d5f575050565b613d6a600182615b1f565b9050600060038281548110613d8f57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600401549050600060038381548110613dc657634e487b7160e01b600052603260045260246000fd5b60009182526020822060046008909202010191909155600354613deb90600190615b1f565b9050600060038481548110613e1057634e487b7160e01b600052603260045260246000fd5b6000918252602091829020600890910201546040518581526001600160a01b03909116925082917f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d910160405180910390a281613e6e575050505050565b6000613e7a8385615aec565b90508015613f605760005b85811015613ee7578160038281548110613eaf57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600802016004016000828254613ecf9190615ad4565b90915550819050613edf81615bba565b915050613e85565b506003546000613ef8876001615ad4565b90505b81811015613f5d578260038281548110613f2557634e487b7160e01b600052603260045260246000fd5b90600052602060002090600802016004016000828254613f459190615ad4565b90915550819050613f5581615bba565b915050613efb565b50505b505050505050565b334114613fdd5760405162461bcd60e51b815260206004820152602d60248201527f746865206d6573736167652073656e646572206d75737420626520746865206260448201527f6c6f636b2070726f6475636572000000000000000000000000000000000000006064820152608401610a43565b60005460ff1661402f5760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610a43565b3a1561407d5760405162461bcd60e51b815260206004820152601460248201527f6761737072696365206973206e6f74207a65726f0000000000000000000000006044820152606401610a43565b61408a62a0668043615bd5565b6140af576127106125a76001546140a19190615b00565b6140ab9190615aec565b6001555b6001546004543491906140c3908390615ad4565b6140cd9190615ad4565b47106140e3576001546140e09082615ad4565b90505b6001600160a01b03821660009081526005602052604090205480156141a95760006003614111600184615b1f565b8154811061412f57634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020190508260045461414d9190615ad4565b6004908155810154614160908490615ad4565b60048201556040518381526001600160a01b038516907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc0559060200160405180910390a250505050565b826001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4836040516141e491815260200190565b60405180910390a2505050565b60035460085481111561420357506008545b6000606460075483600360018761421a9190615b1f565b8154811061423857634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160070154436142559190615b1f565b61425f9190615aec565b6142699190615b00565b6142739190615aec565b905060006003614284600186615b1f565b815481106142a257634e487b7160e01b600052603260045260246000fd5b60009182526020909120600760089092020101558015614338576040517f498e7d920000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602481018290526110019063498e7d9290604401600060405180830381600087803b15801561431f57600080fd5b505af1158015614333573d6000803e3d6000fd5b505050505b6040516001600160a01b038516907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a250505050565b86891461440d5760405162461bcd60e51b815260206004820152604660248201527f746865206e756d62657273206f6620636f6e73656e737573416464726573736560448201527f7320616e64206f7065726174654164647265737365732073686f756c6420626560648201527f20657175616c0000000000000000000000000000000000000000000000000000608482015260a401610a43565b8685146144a85760405162461bcd60e51b815260206004820152604260248201527f746865206e756d62657273206f6620636f6e73656e737573416464726573736560448201527f7320616e64206665654164647265737365732073686f756c642062652065717560648201527f616c000000000000000000000000000000000000000000000000000000000000608482015260a401610a43565b8683146145435760405162461bcd60e51b815260206004820152604c60248201527f746865206e756d62657273206f6620636f6e73656e737573416464726573736560448201527f7320616e6420636f6d6d697373696f6e54686f7573616e64746873732073686f60648201527f756c6420626520657175616c0000000000000000000000000000000000000000608482015260a401610a43565b8681146145de5760405162461bcd60e51b815260206004820152604360248201527f746865206e756d62657273206f6620636f6e73656e737573416464726573736560448201527f7320616e6420766f74654164647265737365642073686f756c6420626520657160648201527f75616c0000000000000000000000000000000000000000000000000000000000608482015260a401610a43565b60005b878110156123a65760005b818110156146d05789898281811061461457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906146299190615577565b6001600160a01b03168a8a8481811061465257634e487b7160e01b600052603260045260246000fd5b90506020020160208101906146679190615577565b6001600160a01b031614156146be5760405162461bcd60e51b815260206004820152601b60248201527f6475706c696361746520636f6e73656e737573206164647265737300000000006044820152606401610a43565b806146c881615bba565b9150506145ec565b506103e88585838181106146f457634e487b7160e01b600052603260045260246000fd5b90506020020135111561476f5760405162461bcd60e51b815260206004820152602260248201527f636f6d6d697373696f6e54686f7573616e64746873206f7574206f6620626f7560448201527f6e640000000000000000000000000000000000000000000000000000000000006064820152608401610a43565b8061477981615bba565b9150506145e1565b6009548190815b818110156147fb5760098054806147af57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055806147f381615bba565b915050614788565b5060005b82811015611ce85781811061489457600985858381811061483057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906148459190615577565b81546001810183556000928352602090922090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055614919565b8484828181106148b457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906148c99190615577565b600982815481106148ea57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b61492281615bba565b90506147ff565b436003614937600184615b1f565b8154811061495557634e487b7160e01b600052603260045260246000fd5b600091825260208220600760089092020101919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b6000816040516020016149b39190615871565b60405160208183030381529060405280519060200120836040516020016149da9190615871565b6040516020818303038152906040528051906020012014905092915050565b015190565b6060600080614a3c614a378560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614ba6565b805190915060008167ffffffffffffffff811115614a6a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015614afe57816020015b614aeb60405180610100016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016060815260200160008152602001600081525090565b815260200190600190039081614a885790505b50905060005b82811015614b9957600080614b3f868481518110614b3257634e487b7160e01b600052603260045260246000fd5b6020026020010151614cd8565b9150915080614b58575091976000975095505050505050565b81848481518110614b7957634e487b7160e01b600052603260045260246000fd5b602002602001018190525050508080614b9190615bba565b915050614b04565b5095901515945092505050565b6060614bb182614e26565b614bba57600080fd5b6000614bc583614e55565b905060008167ffffffffffffffff811115614bf057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015614c3557816020015b6040805180820190915260008082526020820152815260200190600190039081614c0e5790505b5090506000614c478560200151614ed8565b8560200151614c569190615ad4565b90506000805b84811015614ccd57614c6d83614f60565b9150604051806040016040528083815260200184815250848281518110614ca457634e487b7160e01b600052603260045260246000fd5b6020908102919091010152614cb98284615ad4565b925080614cc581615bba565b915050614c5c565b509195945050505050565b614d3b60405180610100016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016060815260200160008152602001600081525090565b604080516101008101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526000614d85856150b0565b90506000614d928261511c565b90505b614d9e8261511c565b8015614da75750805b15614e1a57614dbd614db883615140565b61519d565b6001600160a01b03166020840152614dd7614db883615140565b6001600160a01b0316604084018190528352614dfa614df583615140565b6151bd565b60a084018190526103e8606085015251603014614e15575060005b614d95565b91959194509092505050565b8051600090614e3757506000919050565b6020820151805160001a9060c0821015611144575060009392505050565b8051600090614e6657506000919050565b600080614e768460200151614ed8565b8460200151614e859190615ad4565b9050600084600001518560200151614e9d9190615ad4565b90505b80821015614ecf57614eb182614f60565b614ebb9083615ad4565b915082614ec781615bba565b935050614ea0565b50909392505050565b8051600090811a6080811015614ef15750600092915050565b60b8811080614f0c575060c08110801590614f0c575060f881105b15614f1a5750600192915050565b60c0811015614f4e57614f2f600160b8615b36565b614f3c9060ff1682615b1f565b614f47906001615ad4565b9392505050565b614f2f600160f8615b36565b50919050565b80516000908190811a6080811015614f7b576001915061241b565b60b8811015614fa157614f8f608082615b1f565b614f9a906001615ad4565b915061241b565b60c081101561502257600060b78203600186019550806020036101000a86510491506001810182019350508083101561501c5760405162461bcd60e51b815260206004820152601160248201527f6164646974696f6e206f766572666c6f770000000000000000000000000000006044820152606401610a43565b5061241b565b60f881101561503657614f8f60c082615b1f565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156150a85760405162461bcd60e51b815260206004820152601160248201527f6164646974696f6e206f766572666c6f770000000000000000000000000000006044820152606401610a43565b505092915050565b60408051608081018252600091810182815260608201839052815260208101919091526150dc82614e26565b6150e557600080fd5b60006150f48360200151614ed8565b83602001516151039190615ad4565b6040805180820190915293845260208401525090919050565b8051805160208201516000929161513291615ad4565b836020015110915050919050565b604080518082019091526000808252602082015261515d8261511c565b61516657600080fd5b6020820151600061517682614f60565b90506151828183615ad4565b60209485015260408051808201909152908152928301525090565b80516000906015146151ae57600080fd5b6151b782615271565b92915050565b80516060906151cb57600080fd5b60006151da8360200151614ed8565b905060008184600001516151ee9190615b1f565b905060008167ffffffffffffffff81111561521957634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015615243576020820181803683370190505b50905060008160200190506152688487602001516152619190615ad4565b828561533c565b50949350505050565b80516000901580159061528657508151602110155b61528f57600080fd5b600061529e8360200151614ed8565b905080836000015110156152f45760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f66667365740000000000006044820152606401610a43565b8251600090615304908390615b1f565b90506000808386602001516153199190615ad4565b905080519150602083101561526857506020919091036101000a90049392505050565b8061534657505050565b6020811061537e578251825261535d602084615ad4565b925061536a602083615ad4565b9150615377602082615b1f565b9050615346565b915181516020939093036101000a6000190180199091169216919091179052565b8280546153ab90615b85565b90600052602060002090601f0160209004810192826153cd576000855561541a565b82601f106153de578054855561541a565b8280016001018555821561541a57600052602060002091601f016020900482015b8281111561541a5782548255916001019190600101906153ff565b506154269291506154d8565b5090565b50805461543690615b85565b6000825580601f10615446575050565b601f016020900490600052602060002090810190610b2a91906154d8565b82805461547090615b85565b90600052602060002090601f016020900481019282615492576000855561541a565b82601f106154ab57805160ff191683800117855561541a565b8280016001018555821561541a579182015b8281111561541a5782518255916020019190600101906154bd565b5b8082111561542657600081556001016154d9565b60008083601f8401126154fe578182fd5b50813567ffffffffffffffff811115615515578182fd5b6020830191508360208260051b850101111561553057600080fd5b9250929050565b60008083601f840112615548578182fd5b50813567ffffffffffffffff81111561555f578182fd5b60208301915083602082850101111561553057600080fd5b600060208284031215615588578081fd5b8135614f4781615c15565b6000806000606084860312156155a7578182fd5b83356155b281615c15565b95602085013595506040909401359392505050565b600080600080600080600080600080600060c08c8e0312156155e7578687fd5b67ffffffffffffffff808d3511156155fd578788fd5b61560a8e8e358f016154ed565b909c509a5060208d013581101561561f578788fd5b61562f8e60208f01358f016154ed565b909a50985060408d0135811015615644578788fd5b6156548e60408f01358f016154ed565b909850965060608d0135811015615669578586fd5b6156798e60608f01358f016154ed565b909650945060808d013581101561568e578384fd5b5061569f8d60808e01358e016154ed565b819450809350505060a08c013590509295989b509295989b9093969950565b600080600080604085870312156156d3578384fd5b843567ffffffffffffffff808211156156ea578586fd5b6156f6888389016154ed565b9096509450602087013591508082111561570e578384fd5b5061571b878288016154ed565b95989497509550505050565b6000806000806040858703121561573c578384fd5b843567ffffffffffffffff80821115615753578586fd5b61575f88838901615537565b90965094506020870135915080821115615777578384fd5b5061571b87828801615537565b600060208284031215615795578081fd5b5035919050565b6000815180845260208085019450808401835b838110156157d45781516001600160a01b0316875295820195908201906001016157af565b509495945050505050565b81835281816020850137506000806020838501015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000815180845261583f816020860160208601615b59565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008251615883818460208701615b59565b9190910192915050565b60006101006001600160a01b03808c168452808b166020850152808a166040850152508760608401528660808401528060a08401526158ce81840187615827565b60c0840195909552505060e001529695505050505050565b602081526000614f47602083018461579c565b60408152600061590c604083018561579c565b6020838203818501528185518084528284019150828160051b850101838801865b83811015615979577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0878403018552615967838351615827565b9486019492509085019060010161592d565b50909998505050505050505050565b60608152600061599b606083018661579c565b828103602084810191909152855180835286820192820190845b818110156159d1578451835293830193918301916001016159b5565b5050809350505050826040830152949350505050565b602081526000614f476020830184615827565b602081526000610b936020830184866157df565b604081526000615a226040830186886157df565b8281036020840152615a358185876157df565b979650505050505050565b608081526000615a546080830187896157df565b602083019590955250604081019290925260609091015292915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615aa5578283fd5b83018035915067ffffffffffffffff821115615abf578283fd5b60200191503681900382131561553057600080fd5b60008219821115615ae757615ae7615be9565b500190565b600082615afb57615afb615bff565b500490565b6000816000190483118215151615615b1a57615b1a615be9565b500290565b600082821015615b3157615b31615be9565b500390565b600060ff821660ff841680821015615b5057615b50615be9565b90039392505050565b60005b83811015615b74578181015183820152602001615b5c565b838111156137225750506000910152565b600181811c90821680615b9957607f821691505b60208210811415614f5a57634e487b7160e01b600052602260045260246000fd5b6000600019821415615bce57615bce615be9565b5060010190565b600082615be457615be4615bff565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0381168114610b2a57600080fdfef901d1f85b9401bca3615d24d3c638836691517b2b9b49b054b1943ae030dc3717c66f63d6e8f1d1508a5c941ff46db0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f85b94a458499604a85e90225a14946f36368ae24df16d94de442f5ba55687a24f04419424e0dc2593cc9f4cb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f85b945e00c0d5c4c10d4c805aba878d51129a89d513e094cb089be171e256acdaac1ebbeb32ffba0dd438eeb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f85b941cd652bc64af3f09b490daae27f46e53726ce230940a53b7e0ffd97357e444b85f4d683c1d8e22879ab0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f85b94da37ccecbb2d7c83ae27ee2bebfe8ebce162c60094d82c24274ebbfe438788d684dc6034c3c67664a4b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a2646970667358221220f805dbc96113d2ac1787221d2c78b07acfea72614d27ed4d019b18b167f6e73064736f6c63430008040033 \ No newline at end of file +6080604052600436106103905760003560e01c80638c5d749d116101dc578063c1c6450f11610102578063dc927faf116100a0578063f340fa011161006f578063f340fa01146109b9578063f9a2bbc7146109cc578063facd743b146109e2578063fc87695314610a1a57600080fd5b8063dc927faf14610959578063e1c7392a1461096f578063e3b77a3414610984578063eb57e2021461099957600080fd5b8063c81b1662116100dc578063c81b166214610902578063cb75a59214610918578063d04932e11461092e578063dc19b93e1461094457600080fd5b8063c1c6450f146108b7578063c32968b9146108cc578063c7904091146108ec57600080fd5b8063a730c8911161017a578063ad3c9da611610149578063ad3c9da614610849578063b117172414610876578063b3d676f31461088c578063b7ab4db5146108a257600080fd5b8063a730c891146107e3578063a78abc16146107f9578063aa82dce114610813578063ac4317511461082957600080fd5b8063940a4e45116101b6578063940a4e4514610775578063983443df146107955780639dc09262146107ab578063a5422d5c146107c157600080fd5b80638c5d749d146107295780639369d7de1461073e57806393f2d4041461075357600080fd5b806334bc99b3116102c15780635d25e51d1161025f578063783028a91161022e578063783028a9146106c25780637f05b9ef146106d857806387909e48146106f45780638c128a391461071457600080fd5b80635d25e51d1461061e5780635f640628146106345780636969a25c146106495780636f816a20146106a257600080fd5b806343756e5c1161029b57806343756e5c146105bc5780634392b201146105d257806350fe7408146105e8578063565c56b3146105fe57600080fd5b806334bc99b31461057a5780633b071dcc146105915780633b768160146105a657600080fd5b8063239cba4a1161032e5780632eae3523116103085780632eae3523146104f2578063321d398a1461050757806332a16db214610537578063335e6e2d1461055a57600080fd5b8063239cba4a146104a657806325ee13e2146104c65780632a5d69b2146104dc57600080fd5b80630ac168a11161036a5780630ac168a1146104365780630f43a6771461045a578063109364b11461047057806314c1e1f71461049057600080fd5b8063042295e1146103d857806304c4fec61461040b57806304e9e3a41461042057600080fd5b366103d35734156103d15760405134815233907ff11e547d796cc64acdf758e7cee90439494fd886a19159454aa61e473fdbafef9060200160405180910390a25b005b600080fd5b3480156103e457600080fd5b506103ee61101781565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041757600080fd5b506103d1610a49565b34801561042c57600080fd5b506103ee61100781565b34801561044257600080fd5b5061044c60015481565b604051908152602001610402565b34801561046657600080fd5b5061044c60085481565b34801561047c57600080fd5b5061044c61048b3660046152bb565b610b62565b34801561049c57600080fd5b506103ee61100481565b3480156104b257600080fd5b506103d16104c13660046152d7565b610bec565b3480156104d257600080fd5b506103ee61100581565b3480156104e857600080fd5b506103ee61101281565b3480156104fe57600080fd5b5061044c600a81565b34801561051357600080fd5b506105276105223660046154c8565b6110b9565b6040519015158152602001610402565b34801561054357600080fd5b5061054c611179565b6040516104029291906155e4565b34801561056657600080fd5b506103ee6105753660046154c8565b6116e0565b34801561058657600080fd5b5061044c62a0668081565b34801561059d57600080fd5b5061054c61170a565b3480156105b257600080fd5b506103ee61101481565b3480156105c857600080fd5b506103ee61100181565b3480156105de57600080fd5b5061044c60045481565b3480156105f457600080fd5b506103ee61101681565b34801561060a57600080fd5b5061044c6106193660046152bb565b611978565b34801561062a57600080fd5b506103ee61101181565b34801561064057600080fd5b5061044c600181565b34801561065557600080fd5b506106696106643660046154c8565b6119e4565b604080516001600160a01b039687168152948616602086015292909416918301919091526060820152608081019190915260a001610402565b3480156106ae57600080fd5b506103d16106bd366004615402565b611a33565b3480156106ce57600080fd5b506103ee61100881565b3480156106e457600080fd5b5061044c6729a2241af62c000081565b34801561070057600080fd5b506103d161070f36600461530b565b611caf565b34801561072057600080fd5b5061044c6122ed565b34801561073557600080fd5b5061044c61237d565b34801561074a57600080fd5b506103d1612397565b34801561075f57600080fd5b506107686124c2565b60405161040291906155d1565b34801561078157600080fd5b506107686107903660046154c8565b6125b9565b3480156107a157600080fd5b5061044c60025481565b3480156107b757600080fd5b506103ee61100681565b3480156107cd57600080fd5b506107d6612cf0565b60405161040291906156d2565b3480156107ef57600080fd5b5061044c6125a781565b34801561080557600080fd5b506000546105279060ff1681565b34801561081f57600080fd5b506103ee61101081565b34801561083557600080fd5b506103d161084436600461546b565b612d0f565b34801561085557600080fd5b5061044c6108643660046152bb565b60056020526000908152604090205481565b34801561088257600080fd5b506103ee61100981565b34801561089857600080fd5b506103ee61101381565b3480156108ae57600080fd5b506107686132b8565b3480156108c357600080fd5b506103d16133ae565b3480156108d857600080fd5b506103d16108e73660046152bb565b61358e565b3480156108f857600080fd5b5061044c60075481565b34801561090e57600080fd5b506103ee61100281565b34801561092457600080fd5b5061044c600a5481565b34801561093a57600080fd5b5061044c60065481565b34801561095057600080fd5b5061076861363e565b34801561096557600080fd5b506103ee61100381565b34801561097b57600080fd5b506103d161372d565b34801561099057600080fd5b50610768613861565b3480156109a557600080fd5b506103d16109b43660046152bb565b613997565b6103d16109c73660046152bb565b613c39565b3480156109d857600080fd5b506103ee61100081565b3480156109ee57600080fd5b506105276109fd3660046152bb565b6001600160a01b0316600090815260056020526040902054151590565b348015610a2657600080fd5b50610a3a610a353660046152bb565b613ec2565b604051610402939291906156e5565b6000610a5433610b62565b905080610aa85760405162461bcd60e51b815260206004820152600f60248201527f6e6f7420612076616c696461746f72000000000000000000000000000000000060448201526064015b60405180910390fd5b60006003610ab760018461582f565b81548110610ad557634e487b7160e01b600052603260045260246000fd5b60009182526020808320600160059093020191909101546001600160a01b0316808352600b909152604090912060020154909150610b555760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420696e2054656d706f72617279204d61696e74656e616e6365000000006044820152606401610a9f565b610b5e81613f6c565b5050565b600354600090815b81811015610be257836001600160a01b031660038281548110610b9d57634e487b7160e01b600052603260045260246000fd5b60009182526020909120600590910201546001600160a01b03161415610bd057610bc88160016157e4565b949350505050565b80610bda816158ce565b915050610b6a565b5060009392505050565b3361100114610c635760405162461bcd60e51b815260206004820152602560248201527f746865206d73672073656e646572206d75737420626520736c61736820636f6e60448201527f74726163740000000000000000000000000000000000000000000000000000006064820152608401610a9f565b6001600160a01b03831660009081526005602052604090205480610c875750505050565b610c9260018261582f565b9050600060038281548110610cb757634e487b7160e01b600052603260045260246000fd5b60009182526020822060046005909202010154600354909250610cdc9060019061582f565b905080610d2357600060038481548110610d0657634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160040181905550505050505050565b600060038481548110610d4657634e487b7160e01b600052603260045260246000fd5b6000918252602091829020600590910201546040518581526001600160a01b03909116925082917f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70910160405180910390a26001600160a01b0387166000908152600560209081526040808320839055600b909152812090610dc882826150cc565b5060006001828101829055600290920155600354610de6919061582f565b8414610f305760038054610dfc9060019061582f565b81548110610e1a57634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160038581548110610e4957634e487b7160e01b600052603260045260246000fd5b60009182526020909120825460059092020180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03938416178255600180850154818401805484169186169190911790556002808601549084018054909316941693909317905560038084015490820155600492830154920191909155610edc9085906157e4565b6005600060038781548110610f0157634e487b7160e01b600052603260045260246000fd5b60009182526020808320600160059093020191909101546001600160a01b031683528201929092526040019020555b6003805480610f4f57634e487b7160e01b600052603160045260246000fd5b60008281526020812060056000199093019283020180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018054821690556002820180549091169055600381018290556004018190559155610fba83856157fc565b9050801561102d5760035460005b8181101561102a578260038281548110610ff257634e487b7160e01b600052603260045260246000fd5b9060005260206000209060050201600401600082825461101291906157e4565b90915550819050611022816158ce565b915050610fc8565b50505b6040517fa9955b400000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101889052604481018790526110059063a9955b4090606401600060405180830381600087803b15801561109757600080fd5b505af11580156110ab573d6000803e3d6000fd5b505050505050505050505050565b6000816110c857506000919050565b600060036110d760018561582f565b815481106110f557634e487b7160e01b600052603260045260246000fd5b600091825260208220600160059092020101546001600160a01b0316915061111b6122ed565b6001600160a01b0383166000908152600b6020526040902060020154909150151580611148575060018111155b8061115557508060085410155b806111605750600854155b1561116f575060009392505050565b5060019392505050565b600354600854606091829160009083906111a357611195613861565b905080519150819250611434565b60095460005b8181101561127a57600060056000600984815481106111d857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054905080158015906112585750600b60006009848154811061122e57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902060020154155b1561126957611266856158ce565b94505b50611273816158ce565b90506111a9565b508267ffffffffffffffff8111156112a257634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156112cb578160200160208202803683370190505b5091506000805b8281101561142b576000600560006009848154811061130157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054905080158015906113815750600b60006009848154811061135757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902060020154155b1561141a57600361139360018361582f565b815481106113b157634e487b7160e01b600052603260045260246000fd5b60009182526020909120600160059092020101546001600160a01b031685846113d9816158ce565b9550815181106113f957634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b50611424816158ce565b90506112d2565b50600854945050505b81831115611440578192505b60008367ffffffffffffffff81111561146957634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611492578160200160208202803683370190505b50905060008467ffffffffffffffff8111156114be57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156114f157816020015b60608152602001906001900390816114dc5790505b50905060008060005b878310801561150857508681105b156116d05760006005600088848151811061153357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600360018261156d919061582f565b8154811061158b57634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160010160009054906101000a90046001600160a01b03169250828685815181106115d357634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092018101919091529084166000908152600b90915260409020805461160990615899565b80601f016020809104026020016040519081016040528092919081815260200182805461163590615899565b80156116825780601f1061165757610100808354040283529160200191611682565b820191906000526020600020905b81548152906001019060200180831161166557829003601f168201915b50505050508585815181106116a757634e487b7160e01b600052603260045260246000fd5b6020026020010181905250836116bc906158ce565b935050806116c9906158ce565b90506114fa565b5092989197509095505050505050565b600981815481106116f057600080fd5b6000918252602090912001546001600160a01b0316905081565b600354606090819060008167ffffffffffffffff81111561173b57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611764578160200160208202803683370190505b50905060008267ffffffffffffffff81111561179057634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156117c357816020015b60608152602001906001900390816117ae5790505b50905060005b8381101561196d57600381815481106117f257634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160010160009054906101000a90046001600160a01b031683828151811061183757634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050600b600084838151811061187b57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000180546118b190615899565b80601f01602080910402602001604051908101604052809291908181526020018280546118dd90615899565b801561192a5780601f106118ff5761010080835404028352916020019161192a565b820191906000526020600020905b81548152906001019060200180831161190d57829003601f168201915b505050505082828151811061194f57634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080611965906158ce565b9150506117c9565b509094909350915050565b6001600160a01b0381166000908152600560205260408120548061199f5750600092915050565b60036119ac60018361582f565b815481106119ca57634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160040154915050919050565b600381815481106119f457600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b039384169550918316939216919085565b334114611aa85760405162461bcd60e51b815260206004820152602d60248201527f746865206d6573736167652073656e646572206d75737420626520746865206260448201527f6c6f636b2070726f6475636572000000000000000000000000000000000000006064820152608401610a9f565b60005460ff16611afa5760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610a9f565b3a15611b485760405162461bcd60e51b815260206004820152601460248201527f6761737072696365206973206e6f74207a65726f0000000000000000000000006044820152606401610a9f565b828114611b975760405162461bcd60e51b815260206004820152601060248201527f6c656e677468206e6f7420657175616c000000000000000000000000000000006044820152606401610a9f565b60005b83811015611ca857600060056000878785818110611bc857634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611bdd91906152bb565b6001600160a01b0316815260208101919091526040016000205490508015611c9757838383818110611c1f57634e487b7160e01b600052603260045260246000fd5b90506020020135600b6000888886818110611c4a57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611c5f91906152bb565b6001600160a01b03166001600160a01b031681526020019081526020016000206001016000828254611c9191906157e4565b90915550505b50611ca1816158ce565b9050611b9a565b5050505050565b3361100514611d265760405162461bcd60e51b815260206004820152602960248201527f746865206d73672073656e646572206d7573742062652063616e64696461746560448201527f20636f6e747261637400000000000000000000000000000000000000000000006064820152608401610a9f565b611d388b8b8b8b8b8b8b8b8b8b6140a5565b87611d42576122e0565b6008819055611d5189896144b4565b600354600090895b81831015611e3557600b600060038581548110611d8657634e487b7160e01b600052603260045260246000fd5b60009182526020808320600160059093020191909101546001600160a01b03168352820192909252604001812090611dbe82826150cc565b6001820160009055600282016000905550506005600060038581548110611df557634e487b7160e01b600052603260045260246000fd5b60009182526020808320600160059093020191909101546001600160a01b0316835282019290925260400181205582611e2d816158ce565b935050611d59565b8092505b81831015611ed1576003805480611e6057634e487b7160e01b600052603160045260246000fd5b60008281526020812060056000199093019283020180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811682556001820180548216905560028201805490911690556003810182905560040155905582611ec9816158ce565b935050611e39565b600092505b808310156122b3576040805160a0810182526000808252602082018190529181018290526060810182905260808101919091528e8e85818110611f2957634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611f3e91906152bb565b6001600160a01b031681528c8c85818110611f6957634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611f7e91906152bb565b6001600160a01b031660208201528a8a85818110611fac57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611fc191906152bb565b6001600160a01b03166040820152888885818110611fef57634e487b7160e01b600052603260045260246000fd5b60200291909101356060830152506000608082015286868581811061202457634e487b7160e01b600052603260045260246000fd5b90506020028101906120369190615781565b6020808401516001600160a01b03166000908152600b9091526040902061205e929091615106565b508284106121975760038054600181018255600091909152815160059091027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810180546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560208401517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c8301805491851691831691909117905560408401517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d830180549190941691161790915560608201517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85e82015560808201517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85f90910155612244565b80600385815481106121b957634e487b7160e01b600052603260045260246000fd5b6000918252602091829020835160059092020180546001600160a01b039283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178255928401516001820180549184169185169190911790556040840151600282018054919093169316929092179055606082015160038201556080909101516004909101555b61224f8460016157e4565b600560008f8f8881811061227357634e487b7160e01b600052603260045260246000fd5b905060200201602081019061228891906152bb565b6001600160a01b03168152602081019190915260400160002055506122ac836158ce565b9250611ed6565b6040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf90600090a15050505b5050505050505050505050565b6003546000908180805b83811015612374576003818154811061232057634e487b7160e01b600052603260045260246000fd5b60009182526020808320600160059093020191909101546001600160a01b0316808352600b90915260409091206002015490925061236457612361836158ce565b92505b61236d816158ce565b90506122f7565b50909392505050565b6000600a54600014156123905750600190565b50600a5490565b60006123a233610b62565b9050600081116123f45760405162461bcd60e51b815260206004820152600f60248201527f6e6f7420612076616c696461746f7200000000000000000000000000000000006044820152606401610a9f565b6123fd816110b9565b61246f5760405162461bcd60e51b815260206004820152602360248201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e6160448201527f6e636500000000000000000000000000000000000000000000000000000000006064820152608401610a9f565b6124bf600361247f60018461582f565b8154811061249d57634e487b7160e01b600052603260045260246000fd5b60009182526020909120600160059092020101546001600160a01b031661465c565b50565b60035460609060008167ffffffffffffffff8111156124f157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561251a578160200160208202803683370190505b50905060005b828110156125b2576003818154811061254957634e487b7160e01b600052603260045260246000fd5b600091825260209091206005909102015482516001600160a01b039091169083908390811061258857634e487b7160e01b600052603260045260246000fd5b6001600160a01b0390921660209283029190910190910152806125aa816158ce565b915050612520565b5092915050565b606033611005146126325760405162461bcd60e51b815260206004820152602960248201527f746865206d73672073656e646572206d7573742062652063616e64696461746560448201527f20636f6e747261637400000000000000000000000000000000000000000000006064820152608401610a9f565b60035460009081908190815b818110156127005760006003828154811061266957634e487b7160e01b600052603260045260246000fd5b9060005260206000209060050201905060006064600254836004015461268f9190615810565b61269991906157fc565b90506126a581876157e4565b9550808260040160008282546126bb919061582f565b90915550506001808301546001600160a01b03166000908152600b6020526040902001546126e990866157e4565b9450505080806126f8906158ce565b91505061263e565b506110026001600160a01b031663631cbe3c846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561273e57600080fd5b505af1158015612752573d6000803e3d6000fd5b50505050506000826000146127695760065461276c565b60005b90508167ffffffffffffffff81111561279557634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156127be578160200160208202803683370190505b50955060008267ffffffffffffffff8111156127ea57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612813578160200160208202803683370190505b50905060008080805b86811015612ab75760006003828154811061284757634e487b7160e01b600052603260045260246000fd5b6000918252602090912060059091020180548d519192506001600160a01b0316908d908490811061288857634e487b7160e01b600052603260045260246000fd5b6001600160a01b0390921660209283029190910190910152600481015493508315612aa457600281015460038201546001600160a01b039091169b506000906103e8906128d59087615810565b6128df91906157fc565b905080851115612955576128f3818661582f565b87848151811061291357634e487b7160e01b600052603260045260246000fd5b60200260200101818152505086838151811061293f57634e487b7160e01b600052603260045260246000fd5b60200260200101518661295291906157e4565b95505b600060048301819055606461296a8a84615810565b61297491906157fc565b9050612980818361582f565b915061298c81866157e4565b945060008d6001600160a01b03166108fc849081150290604051600060405180830381858888f1935050505090508015612a32578d6001600160a01b03168460000160009054906101000a90046001600160a01b03166001600160a01b03167f5f05434e85dc7eb0d20406bd66f9b9c92a6d4d710b8cffeb61176632c83974d3858a604051612a25929190918252602082015260400190565b60405180910390a3612aa0565b8d6001600160a01b03168460000160009054906101000a90046001600160a01b03166001600160a01b03167fa49797d31ee4d8d18eeb937551b21f754dd96d6e3922324d5c5ba4522ebc45bc858a604051612a97929190918252602082015260400190565b60405180910390a35b5050505b5080612aaf816158ce565b91505061281c565b508015612c785760005b600354811015612c7657600060038281548110612aee57634e487b7160e01b600052603260045260246000fd5b600091825260208083206040805160a081018252600590940290910180546001600160a01b03908116855260018083015482168686018190526002840154909216868501526003830154606087015260049092015460808601528552600b909252909220909101549091508015612c615760008a612b6c8387615810565b612b7691906157fc565b9050600083604001516001600160a01b03166108fc839081150290604051600060405180830381858888f1935050505090508015612c085783604001516001600160a01b031684600001516001600160a01b03167f25979a26e110be0826acf11a91551d5b1a5d7d584c2a44c916b39127085e303884604051612bfb91815260200190565b60405180910390a3612c5e565b83604001516001600160a01b031684600001516001600160a01b03167fee77a994024d311f481abd835e6e71b8c5cadb26f57e1ac81b16dd6ceb76cc3184604051612c5591815260200190565b60405180910390a35b50505b50508080612c6e906158ce565b915050612ac1565b505b6110106001600160a01b03166374873a3d848c878f6040518563ffffffff1660e01b8152600401612cab93929190615673565b6000604051808303818588803b158015612cc457600080fd5b505af1158015612cd8573d6000803e3d6000fd5b50506000600455505050505050505050505050919050565b6040518061020001604052806101d4815260200161593f6101d4913981565b60005460ff16612d615760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610a9f565b3361100614612dd85760405162461bcd60e51b815260206004820152602a60248201527f746865206d73672073656e646572206d75737420626520676f7665726e616e6360448201527f6520636f6e7472616374000000000000000000000000000000000000000000006064820152608401610a9f565b60208114612e165783836040517fad23613c000000000000000000000000000000000000000000000000000000008152600401610a9f92919061570a565b612e8a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601b81527f626c6f636b526577617264496e63656e7469766550657263656e740000000000602082015291506146a49050565b15612f1e57604080516020601f8401819004810282018101909252828152600091612ecd918585808385018382808284376000920191909152506146fd92505050565b90506064811115612f1657848482600060646040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610a9f959493929190615750565b600255613275565b612f9284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527f766f746552657761726450657263656e74000000000000000000000000000000602082015291506146a49050565b1561302657604080516020601f8401819004810282018101909252828152600091612fd5918585808385018382808284376000920191909152506146fd92505050565b9050606481111561301e57848482600060646040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610a9f959493929190615750565b600655613275565b61309a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601481527f6d61696e7461696e536c61736850657263656e74000000000000000000000000602082015291506146a49050565b1561312e57604080516020601f84018190048102820181019092528281526000916130dd918585808385018382808284376000920191909152506146fd92505050565b9050606481111561312657848482600060646040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610a9f959493929190615750565b600755613275565b6131a284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81527f7475726e4c656e67746800000000000000000000000000000000000000000000602082015291506146a49050565b1561323f57604080516020601f84018190048102820181019092528281526000916131e5918585808385018382808284376000920191909152506146fd92505050565b90508015806131f45750600981115b1561323757848482600160096040517f808861f9000000000000000000000000000000000000000000000000000000008152600401610a9f959493929190615750565b600a55613275565b83836040517f64b4f604000000000000000000000000000000000000000000000000000000008152600401610a9f92919061570a565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516132aa949392919061571e565b60405180910390a150505050565b60035460609060008167ffffffffffffffff8111156132e757634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015613310578160200160208202803683370190505b50905060005b828110156125b2576003818154811061333f57634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160010160009054906101000a90046001600160a01b031682828151811061338457634e487b7160e01b600052603260045260246000fd5b6001600160a01b0390921660209283029190910190910152806133a6816158ce565b915050613316565b33611005146134255760405162461bcd60e51b815260206004820152602960248201527f746865206d73672073656e646572206d7573742062652063616e64696461746560448201527f20636f6e747261637400000000000000000000000000000000000000000000006064820152608401610a9f565b60035460008167ffffffffffffffff81111561345157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561347a578160200160208202803683370190505b50905060008060005b8481101561354257600381815481106134ac57634e487b7160e01b600052603260045260246000fd5b60009182526020808320600160059093020191909101546001600160a01b0316808352600b90915260409091206002015490925015613532578184846134f1816158ce565b95508151811061351157634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61353b816158ce565b9050613483565b5060005b82811015611ca85761357e84828151811061357157634e487b7160e01b600052603260045260246000fd5b6020026020010151613f6c565b613587816158ce565b9050613546565b33611001146136055760405162461bcd60e51b815260206004820152602560248201527f746865206d73672073656e646572206d75737420626520736c61736820636f6e60448201527f74726163740000000000000000000000000000000000000000000000000000006064820152608401610a9f565b6001600160a01b03811660009081526005602052604090205480613627575050565b613630816110b9565b15610b5e57610b5e8261465c565b60095460609060008167ffffffffffffffff81111561366d57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015613696578160200160208202803683370190505b50905060005b828110156125b257600981815481106136c557634e487b7160e01b600052603260045260246000fd5b9060005260206000200160009054906101000a90046001600160a01b031682828151811061370357634e487b7160e01b600052603260045260246000fd5b6001600160a01b039092166020928302919091019091015280613725816158ce565b91505061369c565b60005460ff16156137805760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e6974000000000000006044820152606401610a9f565b60006137a66040518061020001604052806101d4815260200161593f6101d49139614702565b90508061381b5760405162461bcd60e51b815260206004820152602160248201527f6661696c656420746f20706172736520696e69742076616c696461746f72536560448201527f74000000000000000000000000000000000000000000000000000000000000006064820152608401610a9f565b506729a2241af62c00006001908155600a6002819055819055600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b60035460609060006138716122ed565b905060008167ffffffffffffffff81111561389c57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156138c5578160200160208202803683370190505b50905060008060005b8581101561398c57600381815481106138f757634e487b7160e01b600052603260045260246000fd5b60009182526020808320600160059093020191909101546001600160a01b0316808352600b90915260409091206002015490925061397c5781848461393b816158ce565b95508151811061395b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250505b613985816158ce565b90506138ce565b509195945050505050565b3361100114613a0e5760405162461bcd60e51b815260206004820152602560248201527f746865206d73672073656e646572206d75737420626520736c61736820636f6e60448201527f74726163740000000000000000000000000000000000000000000000000000006064820152608401610a9f565b6001600160a01b03811660009081526005602052604090205480613a30575050565b613a3b60018261582f565b9050600060038281548110613a6057634e487b7160e01b600052603260045260246000fd5b9060005260206000209060050201600401549050600060038381548110613a9757634e487b7160e01b600052603260045260246000fd5b60009182526020822060046005909202010191909155600354613abc9060019061582f565b9050600060038481548110613ae157634e487b7160e01b600052603260045260246000fd5b6000918252602091829020600590910201546040518581526001600160a01b03909116925082917f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d910160405180910390a281613b3f575050505050565b6000613b4b83856157fc565b90508015613c315760005b85811015613bb8578160038281548110613b8057634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016004016000828254613ba091906157e4565b90915550819050613bb0816158ce565b915050613b56565b506003546000613bc98760016157e4565b90505b81811015613c2e578260038281548110613bf657634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016004016000828254613c1691906157e4565b90915550819050613c26816158ce565b915050613bcc565b50505b505050505050565b334114613cae5760405162461bcd60e51b815260206004820152602d60248201527f746865206d6573736167652073656e646572206d75737420626520746865206260448201527f6c6f636b2070726f6475636572000000000000000000000000000000000000006064820152608401610a9f565b60005460ff16613d005760405162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e697420796574000000000000006044820152606401610a9f565b3a15613d4e5760405162461bcd60e51b815260206004820152601460248201527f6761737072696365206973206e6f74207a65726f0000000000000000000000006044820152606401610a9f565b613d5b62a06680436158e9565b613d80576127106125a7600154613d729190615810565b613d7c91906157fc565b6001555b600154600454349190613d949083906157e4565b613d9e91906157e4565b4710613db457600154613db190826157e4565b90505b6001600160a01b0382166000908152600560205260409020548015613e7a5760006003613de260018461582f565b81548110613e0057634e487b7160e01b600052603260045260246000fd5b9060005260206000209060050201905082600454613e1e91906157e4565b6004908155810154613e319084906157e4565b60048201556040518381526001600160a01b038516907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc0559060200160405180910390a250505050565b826001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b483604051613eb591815260200190565b60405180910390a2505050565b600b60205260009081526040902080548190613edd90615899565b80601f0160208091040260200160405190810160405280929190818152602001828054613f0990615899565b8015613f565780601f10613f2b57610100808354040283529160200191613f56565b820191906000526020600020905b815481529060010190602001808311613f3957829003601f168201915b5050505050908060010154908060020154905083565b600354600854811115613f7e57506008545b6007546001600160a01b0383166000908152600b602052604081206002015490916064918490613fae904361582f565b613fb891906157fc565b613fc29190615810565b613fcc91906157fc565b6001600160a01b0384166000908152600b60205260408120600201559050801561406c576040517f498e7d920000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018290526110019063498e7d9290604401600060405180830381600087803b15801561405357600080fd5b505af1158015614067573d6000803e3d6000fd5b505050505b6040516001600160a01b038416907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a2505050565b8689146141405760405162461bcd60e51b815260206004820152604660248201527f746865206e756d62657273206f6620636f6e73656e737573416464726573736560448201527f7320616e64206f7065726174654164647265737365732073686f756c6420626560648201527f20657175616c0000000000000000000000000000000000000000000000000000608482015260a401610a9f565b8685146141db5760405162461bcd60e51b815260206004820152604260248201527f746865206e756d62657273206f6620636f6e73656e737573416464726573736560448201527f7320616e64206665654164647265737365732073686f756c642062652065717560648201527f616c000000000000000000000000000000000000000000000000000000000000608482015260a401610a9f565b8683146142765760405162461bcd60e51b815260206004820152604c60248201527f746865206e756d62657273206f6620636f6e73656e737573416464726573736560448201527f7320616e6420636f6d6d697373696f6e54686f7573616e64746873732073686f60648201527f756c6420626520657175616c0000000000000000000000000000000000000000608482015260a401610a9f565b8681146143115760405162461bcd60e51b815260206004820152604360248201527f746865206e756d62657273206f6620636f6e73656e737573416464726573736560448201527f7320616e6420766f74654164647265737365642073686f756c6420626520657160648201527f75616c0000000000000000000000000000000000000000000000000000000000608482015260a401610a9f565b60005b878110156122e05760005b818110156144035789898281811061434757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061435c91906152bb565b6001600160a01b03168a8a8481811061438557634e487b7160e01b600052603260045260246000fd5b905060200201602081019061439a91906152bb565b6001600160a01b031614156143f15760405162461bcd60e51b815260206004820152601b60248201527f6475706c696361746520636f6e73656e737573206164647265737300000000006044820152606401610a9f565b806143fb816158ce565b91505061431f565b506103e885858381811061442757634e487b7160e01b600052603260045260246000fd5b9050602002013511156144a25760405162461bcd60e51b815260206004820152602260248201527f636f6d6d697373696f6e54686f7573616e64746873206f7574206f6620626f7560448201527f6e640000000000000000000000000000000000000000000000000000000000006064820152608401610a9f565b806144ac816158ce565b915050614314565b6009548190815b8181101561452e5760098054806144e257634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905501905580614526816158ce565b9150506144bb565b5060005b82811015611ca8578181106145c757600985858381811061456357634e487b7160e01b600052603260045260246000fd5b905060200201602081019061457891906152bb565b81546001810183556000928352602090922090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905561464c565b8484828181106145e757634e487b7160e01b600052603260045260246000fd5b90506020020160208101906145fc91906152bb565b6009828154811061461d57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b614655816158ce565b9050614532565b6001600160a01b0381166000818152600b602052604080822043600290910155517ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d9190a250565b6000816040516020016146b791906155b5565b60405160208183030381529060405280519060200120836040516020016146de91906155b5565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008061473e6147398460408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614934565b805190915060005b8181101561492a57600080600061478386858151811061477657634e487b7160e01b600052603260045260246000fd5b6020026020010151614a5b565b9250925092508061479c57506000979650505050505050565b6003805460018181018355600092909252845160059091027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810180546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560208701517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c8301805491851691831691909117905560408701517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d830180549190941691161790915560608501517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85e82015560808501517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85f909101556148d49085906157e4565b602080850180516001600160a01b039081166000908152600584526040808220959095559151168152600b8252919091208351614913928501906151a8565b505050508080614922906158ce565b915050614746565b5015159392505050565b606061493f82614b5c565b61494857600080fd5b600061495383614b8b565b905060008167ffffffffffffffff81111561497e57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156149c357816020015b604080518082019091526000808252602082015281526020019060019003908161499c5790505b50905060006149d58560200151614c05565b85602001516149e491906157e4565b90506000805b8481101561398c576149fb83614c8d565b9150604051806040016040528083815260200184815250848281518110614a3257634e487b7160e01b600052603260045260246000fd5b6020908102919091010152614a4782846157e4565b925080614a53816158ce565b9150506149ea565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805160a08101825260008082526020820181905291810182905260608181018390526080820183905291906000614abe86614ddd565b90506000614acb82614e49565b90505b614ad782614e49565b8015614ae05750805b15614b5057614af6614af183614e6d565b614eca565b6001600160a01b03166020840152614b10614af183614e6d565b6001600160a01b0316604084018190528352614b33614b2e83614e6d565b614eea565b6103e860608501528051909550603014614b4b575060005b614ace565b91969395509093505050565b8051600090614b6d57506000919050565b6020820151805160001a9060c082101561116f575060009392505050565b8051600090614b9c57506000919050565b600080614bac8460200151614c05565b8460200151614bbb91906157e4565b9050600084600001518560200151614bd391906157e4565b90505b8082101561237457614be782614c8d565b614bf190836157e4565b915082614bfd816158ce565b935050614bd6565b8051600090811a6080811015614c1e5750600092915050565b60b8811080614c39575060c08110801590614c39575060f881105b15614c475750600192915050565b60c0811015614c7b57614c5c600160b8615846565b614c699060ff168261582f565b614c749060016157e4565b9392505050565b614c5c600160f8615846565b50919050565b80516000908190811a6080811015614ca857600191506125b2565b60b8811015614cce57614cbc60808261582f565b614cc79060016157e4565b91506125b2565b60c0811015614d4f57600060b78203600186019550806020036101000a865104915060018101820193505080831015614d495760405162461bcd60e51b815260206004820152601160248201527f6164646974696f6e206f766572666c6f770000000000000000000000000000006044820152606401610a9f565b506125b2565b60f8811015614d6357614cbc60c08261582f565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614dd55760405162461bcd60e51b815260206004820152601160248201527f6164646974696f6e206f766572666c6f770000000000000000000000000000006044820152606401610a9f565b505092915050565b6040805160808101825260009181018281526060820183905281526020810191909152614e0982614b5c565b614e1257600080fd5b6000614e218360200151614c05565b8360200151614e3091906157e4565b6040805180820190915293845260208401525090919050565b80518051602082015160009291614e5f916157e4565b836020015110915050919050565b6040805180820190915260008082526020820152614e8a82614e49565b614e9357600080fd5b60208201516000614ea382614c8d565b9050614eaf81836157e4565b60209485015260408051808201909152908152928301525090565b8051600090601514614edb57600080fd5b614ee482614f9e565b92915050565b8051606090614ef857600080fd5b6000614f078360200151614c05565b90506000818460000151614f1b919061582f565b905060008167ffffffffffffffff811115614f4657634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015614f70576020820181803683370190505b5090506000816020019050614f95848760200151614f8e91906157e4565b8285615069565b50949350505050565b805160009015801590614fb357508151602110155b614fbc57600080fd5b6000614fcb8360200151614c05565b905080836000015110156150215760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f66667365740000000000006044820152606401610a9f565b825160009061503190839061582f565b905060008083866020015161504691906157e4565b9050805191506020831015614f9557506020919091036101000a90049392505050565b8061507357505050565b602081106150ab578251825261508a6020846157e4565b92506150976020836157e4565b91506150a460208261582f565b9050615073565b915181516020939093036101000a6000190180199091169216919091179052565b5080546150d890615899565b6000825580601f106150e8575050565b601f0160209004906000526020600020908101906124bf919061521c565b82805461511290615899565b90600052602060002090601f0160209004810192826151345760008555615198565b82601f1061516b578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555615198565b82800160010185558215615198579182015b8281111561519857823582559160200191906001019061517d565b506151a492915061521c565b5090565b8280546151b490615899565b90600052602060002090601f0160209004810192826151d65760008555615198565b82601f106151ef57805160ff1916838001178555615198565b82800160010185558215615198579182015b82811115615198578251825591602001919060010190615201565b5b808211156151a4576000815560010161521d565b60008083601f840112615242578182fd5b50813567ffffffffffffffff811115615259578182fd5b6020830191508360208260051b850101111561527457600080fd5b9250929050565b60008083601f84011261528c578182fd5b50813567ffffffffffffffff8111156152a3578182fd5b60208301915083602082850101111561527457600080fd5b6000602082840312156152cc578081fd5b8135614c7481615929565b6000806000606084860312156152eb578182fd5b83356152f681615929565b95602085013595506040909401359392505050565b600080600080600080600080600080600060c08c8e03121561532b578687fd5b67ffffffffffffffff808d351115615341578788fd5b61534e8e8e358f01615231565b909c509a5060208d0135811015615363578788fd5b6153738e60208f01358f01615231565b909a50985060408d0135811015615388578788fd5b6153988e60408f01358f01615231565b909850965060608d01358110156153ad578586fd5b6153bd8e60608f01358f01615231565b909650945060808d01358110156153d2578384fd5b506153e38d60808e01358e01615231565b819450809350505060a08c013590509295989b509295989b9093969950565b60008060008060408587031215615417578384fd5b843567ffffffffffffffff8082111561542e578586fd5b61543a88838901615231565b90965094506020870135915080821115615452578384fd5b5061545f87828801615231565b95989497509550505050565b60008060008060408587031215615480578384fd5b843567ffffffffffffffff80821115615497578586fd5b6154a38883890161527b565b909650945060208701359150808211156154bb578384fd5b5061545f8782880161527b565b6000602082840312156154d9578081fd5b5035919050565b6000815180845260208085019450808401835b838110156155185781516001600160a01b0316875295820195908201906001016154f3565b509495945050505050565b81835281816020850137506000806020838501015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008151808452615583816020860160208601615869565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516155c7818460208701615869565b9190910192915050565b602081526000614c7460208301846154e0565b6040815260006155f760408301856154e0565b6020838203818501528185518084528284019150828160051b850101838801865b83811015615664577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe087840301855261565283835161556b565b94860194925090850190600101615618565b50909998505050505050505050565b60608152600061568660608301866154e0565b828103602084810191909152855180835286820192820190845b818110156156bc578451835293830193918301916001016156a0565b5050809350505050826040830152949350505050565b602081526000614c74602083018461556b565b6060815260006156f8606083018661556b565b60208301949094525060400152919050565b602081526000610bc8602083018486615523565b604081526000615732604083018688615523565b8281036020840152615745818587615523565b979650505050505050565b608081526000615764608083018789615523565b602083019590955250604081019290925260609091015292915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126157b5578283fd5b83018035915067ffffffffffffffff8211156157cf578283fd5b60200191503681900382131561527457600080fd5b600082198211156157f7576157f76158fd565b500190565b60008261580b5761580b615913565b500490565b600081600019048311821515161561582a5761582a6158fd565b500290565b600082821015615841576158416158fd565b500390565b600060ff821660ff841680821015615860576158606158fd565b90039392505050565b60005b8381101561588457818101518382015260200161586c565b83811115615893576000848401525b50505050565b600181811c908216806158ad57607f821691505b60208210811415614c8757634e487b7160e01b600052602260045260246000fd5b60006000198214156158e2576158e26158fd565b5060010190565b6000826158f8576158f8615913565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b03811681146124bf57600080fdfef901d1f85b9401bca3615d24d3c638836691517b2b9b49b054b1943ae030dc3717c66f63d6e8f1d1508a5c941ff46db0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f85b94a458499604a85e90225a14946f36368ae24df16d94de442f5ba55687a24f04419424e0dc2593cc9f4cb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f85b945e00c0d5c4c10d4c805aba878d51129a89d513e094cb089be171e256acdaac1ebbeb32ffba0dd438eeb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f85b941cd652bc64af3f09b490daae27f46e53726ce230940a53b7e0ffd97357e444b85f4d683c1d8e22879ab0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f85b94da37ccecbb2d7c83ae27ee2bebfe8ebce162c60094d82c24274ebbfe438788d684dc6034c3c67664a4b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a2646970667358221220b45381971b34a5997bb24a83113d68f5c64e98da1975c66967639f63bfb1473464736f6c63430008040033 \ No newline at end of file diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index d465d9cac..de16082f9 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -560,87 +560,87 @@ func init() { Configs: []*UpgradeConfig{ { ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonValidatorContract, }, { ContractAddr: common.HexToAddress(SlashContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonSlashContract, }, { ContractAddr: common.HexToAddress(SystemRewardContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonSystemRewardContract, }, { ContractAddr: common.HexToAddress(LightClientContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonLightClientContract, }, { ContractAddr: common.HexToAddress(RelayerHubContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonRelayerHubContract, }, { ContractAddr: common.HexToAddress(CandidateHubContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonCandidateHubContract, }, { ContractAddr: common.HexToAddress(GovHubContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonGovHubContract, }, { ContractAddr: common.HexToAddress(PledgeCandidateContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonPledgeCandidateContract, }, { ContractAddr: common.HexToAddress(BurnContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonBurnContract, }, { ContractAddr: common.HexToAddress(FoundationContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonFoundationContract, }, { ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonStakeHubContract, }, { ContractAddr: common.HexToAddress(CoreAgentContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonCoreAgentContract, }, { ContractAddr: common.HexToAddress(HashAgentContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonHashAgentContract, }, { ContractAddr: common.HexToAddress(BTCAgentContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonBTCAgentContract, }, { ContractAddr: common.HexToAddress(BTCStakeContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonBTCStakeContract, }, { ContractAddr: common.HexToAddress(FeeMarketContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonFeeMarketContract, }, { ContractAddr: common.HexToAddress(ChannelContract), - CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55c040cc68598789111958020c1cba951752c999", + CommitUrl: "https://github.com/coredao-org/core-genesis-contract/commit/55578e96d6083d942dd1613a4d44da749d68792b", Code: hermes.PigeonChannelContract, }, }, diff --git a/params/config.go b/params/config.go index dd1e3e983..f8c920fbf 100644 --- a/params/config.go +++ b/params/config.go @@ -212,12 +212,12 @@ var ( TheseusTime: newUint64(1748592000), // 2025-05-30 08:00:00 AM UTC CancunTime: newUint64(1748592000), // 2025-05-30 08:00:00 AM UTC TheseusFixTime: newUint64(1752652800), // 2025-07-16 08:00:00 AM UTC - LubanTime: newUint64(1758700800), - PlatoTime: newUint64(1758700800), - BohrTime: newUint64(1758700800), - PascalTime: newUint64(1758700800), - PragueTime: newUint64(1758700800), - HermesTime: newUint64(1758700800), // 2025-09-24 08:00:00 AM UTC + LubanTime: newUint64(1760515200), + PlatoTime: newUint64(1760515200), + BohrTime: newUint64(1760515200), + PascalTime: newUint64(1760515200), + PragueTime: newUint64(1760515200), + HermesTime: newUint64(1760515200), // 2025-10-15 08:00:00 AM UTC Satoshi: &SatoshiConfig{ Period: 3, Epoch: 200, diff --git a/params/version.go b/params/version.go index a937a9369..ad2a5a8af 100644 --- a/params/version.go +++ b/params/version.go @@ -23,7 +23,7 @@ import ( const ( VersionMajor = 1 // Major version component of the current release VersionMinor = 0 // Minor version component of the current release - VersionPatch = 20 // Patch version component of the current release + VersionPatch = 21 // Patch version component of the current release VersionMeta = "" // Version metadata to append to the version string ) diff --git a/version/version.go b/version/version.go index 21c48b35c..1d938438e 100644 --- a/version/version.go +++ b/version/version.go @@ -19,6 +19,6 @@ package version const ( Major = 1 // Major version component of the current release Minor = 0 // Minor version component of the current release - Patch = 20 // Patch version component of the current release + Patch = 21 // Patch version component of the current release Meta = "" // Version metadata to append to the version string )