60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b806200004f5750303b1580156200004f575060005460ff166001145b620000b75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000db576000805461ff0019166101001790555b801562000122576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50613b8780620001336000396000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c806370a082311161017b578063a22cb465116100d8578063d53913931161008c578063e8a3d48511610071578063e8a3d48514610602578063e985e9c51461060a578063f2fde38b1461065457600080fd5b8063d5391393146105c8578063d547741f146105ef57600080fd5b8063c0423145116100bd578063c04231451461058f578063c87b56dd146105a2578063ca15c873146105b557600080fd5b8063a22cb46514610569578063b88d4fde1461057c57600080fd5b8063906571471161012f578063938e3d7b11610114578063938e3d7b1461054657806395d89b4114610559578063a217fddf1461056157600080fd5b806390657147146104ed57806391d148541461050057600080fd5b806375ceb3411161016057806375ceb341146104a95780638da5cb5b146104bc5780639010d07c146104da57600080fd5b806370a082311461048e578063715018a6146104a157600080fd5b806336568abe116102295780634f6ccce7116101dd5780636352211e116101c25780636352211e1461046057806369e2f0fb146104735780636c0360eb1461048657600080fd5b80634f6ccce71461043a57806355f804b31461044d57600080fd5b806340c10f191161020e57806340c10f191461040157806342842e0e1461041457806342966c681461042757600080fd5b806336568abe146103db5780633dd1eb61146103ee57600080fd5b806323b872dd116102805780632f2ff15d116102655780632f2ff15d146103a05780632f745c59146103b357806331ae450b146103c657600080fd5b806323b872dd1461036a578063248a9ca31461037d57600080fd5b8063081812fc116102b1578063081812fc1461030a578063095ea7b31461034257806318160ddd1461035757600080fd5b806301ffc9a7146102cd57806306fdde03146102f5575b600080fd5b6102e06102db36600461317f565b610667565b60405190151581526020015b60405180910390f35b6102fd610687565b6040516102ec919061320a565b61031d61031836600461321d565b610719565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ec565b61035561035036600461325f565b61074d565b005b610161545b6040519081526020016102ec565b610355610378366004613289565b6108de565b61035c61038b36600461321d565b60009081526097602052604090206001015490565b6103556103ae3660046132c5565b610980565b61035c6103c136600461325f565b6109a5565b6103ce610a75565b6040516102ec91906132f1565b6103556103e93660046132c5565b610b31565b6103556103fc36600461334b565b610be4565b61035561040f36600461325f565b610c19565b610355610422366004613289565b610c4d565b61035561043536600461321d565b610c68565b61035c61044836600461321d565b610d09565b61035561045b36600461347a565b610dc9565b61031d61046e36600461321d565b610de1565b61035561048136600461334b565b610e6d565b6102fd610ea2565b61035c61049c36600461334b565b610f31565b610355610fff565b6103556104b736600461352f565b611013565b60335473ffffffffffffffffffffffffffffffffffffffff1661031d565b61031d6104e836600461357d565b611084565b6103556104fb36600461359f565b6110a3565b6102e061050e3660046132c5565b600091825260976020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61035561055436600461347a565b6112ca565b6102fd6112e2565b61035c600081565b610355610577366004613613565b6112f1565b61035561058a36600461364f565b6112fc565b61035561059d3660046136cb565b61139e565b6102fd6105b036600461321d565b6113e0565b61035c6105c336600461321d565b611446565b61035c7f4d494e5445525f524f4c4500000000000000000000000000000000000000000081565b6103556105fd3660046132c5565b61145d565b6102fd611482565b6102e061061836600461371f565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526101006020908152604080832093909416825291909152205460ff1690565b61035561066236600461334b565b611490565b600061067282611544565b806106815750610681826115e6565b92915050565b606060fb805461069690613749565b80601f01602080910402602001604051908101604052809291908181526020018280546106c290613749565b801561070f5780601f106106e45761010080835404028352916020019161070f565b820191906000526020600020905b8154815290600101906020018083116106f257829003601f168201915b5050505050905090565b60006107248261163c565b50600090815260ff602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061075882610de1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361081a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff8216148061084357506108438133610618565b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610811565b6108d983836116c7565b505050565b6108e9335b82611767565b610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610811565b6108d9838383611828565b60008281526097602052604090206001015461099b81611b30565b6108d98383611b3a565b60006109b083610f31565b8210610a3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e64730000000000000000000000000000000000000000006064820152608401610811565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815261015f60209081526040808320938352929052205490565b60606000610a8281611446565b905060008167ffffffffffffffff811115610a9f57610a9f613366565b604051908082528060200260200182016040528015610ac8578160200160208202803683370190505b50905060005b82811015610b2a57610ae1600082611084565b828281518110610af357610af361379c565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015280610b22816137fa565b915050610ace565b5092915050565b73ffffffffffffffffffffffffffffffffffffffff81163314610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610811565b610be08282611b5c565b5050565b6000610bef81611b30565b610be07f4d494e5445525f524f4c4500000000000000000000000000000000000000000083610980565b7f4d494e5445525f524f4c45000000000000000000000000000000000000000000610c4381611b30565b6108d98383611b7e565b6108d9838383604051806020016040528060008152506112fc565b610c71336108e3565b610cfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610811565b610d0681611db1565b50565b6000610d156101615490565b8210610da3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e647300000000000000000000000000000000000000006064820152608401610811565b6101618281548110610db757610db761379c565b90600052602060002001549050919050565b6000610dd481611b30565b6101926108d98382613880565b600081815260fd602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610811565b6000610e7881611b30565b610be07f4d494e5445525f524f4c450000000000000000000000000000000000000000008361145d565b6101928054610eb090613749565b80601f0160208091040260200160405190810160405280929190818152602001828054610edc90613749565b8015610f295780601f10610efe57610100808354040283529160200191610f29565b820191906000526020600020905b815481529060010190602001808311610f0c57829003601f168201915b505050505081565b600073ffffffffffffffffffffffffffffffffffffffff8216610fd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610811565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260fe602052604090205490565b611007611dba565b6110116000611e3b565b565b7f4d494e5445525f524f4c4500000000000000000000000000000000000000000061103d81611b30565b60005b825181101561107e5761106c8484838151811061105f5761105f61379c565b6020026020010151611b7e565b80611076816137fa565b915050611040565b50505050565b600082815260c96020526040812061109c9083611eb2565b9392505050565b600054610100900460ff16158080156110c35750600054600160ff909116105b806110dd5750303b1580156110dd575060005460ff166001145b611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610811565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156111c757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61123b6040518060400160405280600981526020017f4f776e6572204e465400000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f4f574e45524e4654000000000000000000000000000000000000000000000000815250611ebe565b611246600085611b3a565b6101926112538482613880565b506101916112618382613880565b50801561107e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b60006112d581611b30565b6101916108d98382613880565b606060fc805461069690613749565b610be0338383611f5f565b6113063383611767565b611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610811565b61107e8484848461208d565b60005b815181101561107e576113ce84848484815181106113c1576113c161379c565b6020026020010151610c4d565b806113d8816137fa565b9150506113a1565b60606113eb8261163c565b60006113f5612130565b90506000815111611415576040518060200160405280600081525061109c565b8061141f84612140565b60405160200161143092919061399a565b6040516020818303038152906040529392505050565b600081815260c960205260408120610681906121fe565b60008281526097602052604090206001015461147881611b30565b6108d98383611b5c565b6101918054610eb090613749565b611498611dba565b73ffffffffffffffffffffffffffffffffffffffff811661153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610811565b610d0681611e3b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806115d757507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610681575061068182612208565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610681575061068182611544565b600081815260fd602052604090205473ffffffffffffffffffffffffffffffffffffffff16610d06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610811565b600081815260ff6020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061172182610de1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061177383610de1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117e2575073ffffffffffffffffffffffffffffffffffffffff8082166000908152610100602090815260408083209388168352929052205460ff165b8061182057508373ffffffffffffffffffffffffffffffffffffffff1661180884610719565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1661184882610de1565b73ffffffffffffffffffffffffffffffffffffffff16146118eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610811565b73ffffffffffffffffffffffffffffffffffffffff821661198d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610811565b61199a838383600161225e565b8273ffffffffffffffffffffffffffffffffffffffff166119ba82610de1565b73ffffffffffffffffffffffffffffffffffffffff1614611a5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610811565b600081815260ff6020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff87811680865260fe855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190559087168086528386208054600101905586865260fd90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610d06813361226a565b611b448282612324565b600082815260c9602052604090206108d99082612418565b611b66828261243a565b600082815260c9602052604090206108d990826124f5565b73ffffffffffffffffffffffffffffffffffffffff8216611bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610811565b600081815260fd602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610811565b611c9560008383600161225e565b600081815260fd602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611d21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610811565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260fe602090815260408083208054600101905584835260fd90915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b610d0681612517565b60335473ffffffffffffffffffffffffffffffffffffffff163314611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610811565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061109c83836125fd565b600054610100900460ff16611f55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610811565b610be08282612627565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610811565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152610100602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612098848484611828565b6120a4848484846126d7565b61107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610811565b6060610192805461069690613749565b6060600061214d836128ca565b600101905060008167ffffffffffffffff81111561216d5761216d613366565b6040519080825280601f01601f191660200182016040528015612197576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846121a157509392505050565b6000610681825490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806106815750610681826129ac565b61107e84848484612a43565b600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610be0576122aa81612be9565b6122b5836020612c08565b6040516020016122c69291906139c9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526108119160040161320a565b600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610be057600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556123ba3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061109c8373ffffffffffffffffffffffffffffffffffffffff8416612e4b565b600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610be057600082815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061109c8373ffffffffffffffffffffffffffffffffffffffff8416612e9a565b600061252282610de1565b905061253281600084600161225e565b61253b82610de1565b600083815260ff6020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff851680855260fe845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905587855260fd909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60008260000182815481106126145761261461379c565b9060005260206000200154905092915050565b600054610100900460ff166126be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610811565b60fb6126ca8382613880565b5060fc6108d98282613880565b600073ffffffffffffffffffffffffffffffffffffffff84163b156128bf576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061274e903390899088908890600401613a4a565b6020604051808303816000875af19250505080156127a7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526127a491810190613a93565b60015b612874573d8080156127d5576040519150601f19603f3d011682016040523d82523d6000602084013e6127da565b606091505b50805160000361286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610811565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611820565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612913577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061293f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061295d57662386f26fc10000830492506010015b6305f5e1008310612975576305f5e100830492506008015b612710831061298957612710830492506004015b6064831061299b576064830492506002015b600a83106106815760010192915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061068157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610681565b6001811115612ad4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e736563757469766520747260448201527f616e7366657273206e6f7420737570706f7274656400000000000000000000006064820152608401610811565b8173ffffffffffffffffffffffffffffffffffffffff8516612b3f57612b3a816101618054600083815261016260205260408120829055600182018355919091527fafbb1c043347995df017ce3291b765e028ad5f784d2aa00c3f5e073760a4de8b0155565b612b7c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612b7c57612b7c8582612f8d565b73ffffffffffffffffffffffffffffffffffffffff8416612ba557612ba081613049565b612be2565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612be257612be284826130fe565b5050505050565b606061068173ffffffffffffffffffffffffffffffffffffffff831660145b60606000612c17836002613ab0565b612c22906002613ac7565b67ffffffffffffffff811115612c3a57612c3a613366565b6040519080825280601f01601f191660200182016040528015612c64576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612c9b57612c9b61379c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612cfe57612cfe61379c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612d3a846002613ab0565b612d45906001613ac7565b90505b6001811115612de2577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612d8657612d8661379c565b1a60f81b828281518110612d9c57612d9c61379c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93612ddb81613ada565b9050612d48565b50831561109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610811565b6000818152600183016020526040812054612e9257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610681565b506000610681565b60008181526001830160205260408120548015612f83576000612ebe600183613b0f565b8554909150600090612ed290600190613b0f565b9050818114612f37576000866000018281548110612ef257612ef261379c565b9060005260206000200154905080876000018481548110612f1557612f1561379c565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612f4857612f48613b22565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610681565b6000915050610681565b60006001612f9a84610f31565b612fa49190613b0f565b600083815261016060205260409020549091508082146130075773ffffffffffffffffffffffffffffffffffffffff8416600090815261015f60209081526040808320858452825280832054848452818420819055835261016090915290208190555b5060009182526101606020908152604080842084905573ffffffffffffffffffffffffffffffffffffffff909416835261015f81528383209183525290812055565b6101615460009061305c90600190613b0f565b6000838152610162602052604081205461016180549394509092849081106130865761308661379c565b906000526020600020015490508061016183815481106130a8576130a861379c565b600091825260208083209091019290925582815261016290915260408082208490558582528120556101618054806130e2576130e2613b22565b6001900381819060005260206000200160009055905550505050565b600061310983610f31565b73ffffffffffffffffffffffffffffffffffffffff909316600090815261015f6020908152604080832086845282528083208590559382526101609052919091209190915550565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0657600080fd5b60006020828403121561319157600080fd5b813561109c81613151565b60005b838110156131b757818101518382015260200161319f565b50506000910152565b600081518084526131d881602086016020860161319c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061109c60208301846131c0565b60006020828403121561322f57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461325a57600080fd5b919050565b6000806040838503121561327257600080fd5b61327b83613236565b946020939093013593505050565b60008060006060848603121561329e57600080fd5b6132a784613236565b92506132b560208501613236565b9150604084013590509250925092565b600080604083850312156132d857600080fd5b823591506132e860208401613236565b90509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561333f57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161330d565b50909695505050505050565b60006020828403121561335d57600080fd5b61109c82613236565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156133dc576133dc613366565b604052919050565b600067ffffffffffffffff8311156133fe576133fe613366565b61342f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601613395565b905082815283838301111561344357600080fd5b828260208301376000602084830101529392505050565b600082601f83011261346b57600080fd5b61109c838335602085016133e4565b60006020828403121561348c57600080fd5b813567ffffffffffffffff8111156134a357600080fd5b6118208482850161345a565b600082601f8301126134c057600080fd5b8135602067ffffffffffffffff8211156134dc576134dc613366565b8160051b6134eb828201613395565b928352848101820192828101908785111561350557600080fd5b83870192505b848310156135245782358252918301919083019061350b565b979650505050505050565b6000806040838503121561354257600080fd5b61354b83613236565b9150602083013567ffffffffffffffff81111561356757600080fd5b613573858286016134af565b9150509250929050565b6000806040838503121561359057600080fd5b50508035926020909101359150565b6000806000606084860312156135b457600080fd5b6135bd84613236565b9250602084013567ffffffffffffffff808211156135da57600080fd5b6135e68783880161345a565b935060408601359150808211156135fc57600080fd5b506136098682870161345a565b9150509250925092565b6000806040838503121561362657600080fd5b61362f83613236565b91506020830135801515811461364457600080fd5b809150509250929050565b6000806000806080858703121561366557600080fd5b61366e85613236565b935061367c60208601613236565b925060408501359150606085013567ffffffffffffffff81111561369f57600080fd5b8501601f810187136136b057600080fd5b6136bf878235602084016133e4565b91505092959194509250565b6000806000606084860312156136e057600080fd5b6136e984613236565b92506136f760208501613236565b9150604084013567ffffffffffffffff81111561371357600080fd5b613609868287016134af565b6000806040838503121561373257600080fd5b61373b83613236565b91506132e860208401613236565b600181811c9082168061375d57607f821691505b602082108103613796577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361382b5761382b6137cb565b5060010190565b601f8211156108d957600081815260208120601f850160051c810160208610156138595750805b601f850160051c820191505b8181101561387857828155600101613865565b505050505050565b815167ffffffffffffffff81111561389a5761389a613366565b6138ae816138a88454613749565b84613832565b602080601f83116001811461390157600084156138cb5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613878565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561394e5788860151825594840194600190910190840161392f565b508582101561398a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600083516139ac81846020880161319c565b8351908301906139c081836020880161319c565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613a0181601785016020880161319c565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613a3e81602884016020880161319c565b01602801949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152613a8960808301846131c0565b9695505050505050565b600060208284031215613aa557600080fd5b815161109c81613151565b8082028115828204841417610681576106816137cb565b80820180821115610681576106816137cb565b600081613ae957613ae96137cb565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b81810381811115610681576106816137cb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212201366a457e3175a441a0baa2056df802deb801e8d127b857af5ad5ad3ee478abf64736f6c63430008130033