60a06040526003805460ff60201b1916905560006010553480156200002357600080fd5b50604051620041a9380380620041a98339810160408190526200004691620002ba565b6040805180820182526005808252642a37b5b2b760d91b6020808401919091528351808501909452908352642a27a5a2a760d91b908301526001600055906200008f3362000139565b6200009c6000336200018b565b620000c87fd8acb51ff3d48f690a25887aaf234c4ae5a66ab9839243cd8e2b639cade0663b336200018b565b8151620000dd90600a90602085019062000214565b508051620000f390600b90602084019062000214565b50600060085550506001600160a01b0381166200012357604051638474420160e01b815260040160405180910390fd5b60601b6001600160601b03191660805262000329565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff16620002105760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45b5050565b8280546200022290620002ec565b90600052602060002090601f01602090048101928262000246576000855562000291565b82601f106200026157805160ff191683800117855562000291565b8280016001018555821562000291579182015b828111156200029157825182559160200191906001019062000274565b506200029f929150620002a3565b5090565b5b808211156200029f5760008155600101620002a4565b600060208284031215620002cd57600080fd5b81516001600160a01b0381168114620002e557600080fd5b9392505050565b600181811c908216806200030157607f821691505b602082108114156200032357634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c613e5a6200034f6000396000818161095a015261104d0152613e5a6000f3fe6080604052600436106103975760003560e01c806365f13097116101dc57806395d89b4111610102578063c23dc68f116100a0578063e8f3cb9c1161006f578063e8f3cb9c14610ad2578063e985e9c514610af2578063f2fde38b14610b3b578063ffe630b514610b5b57600080fd5b8063c23dc68f14610a52578063c87b56dd14610a7f578063d547741f14610a9f578063def449e314610abf57600080fd5b8063a22cb465116100dc578063a22cb465146109e8578063a2309ff814610a08578063aa1b103f14610a1d578063b88d4fde14610a3257600080fd5b806395d89b411461099e57806399a2557a146109b3578063a217fddf146109d357600080fd5b80638462151c1161017a5780638da5cb5b116101495780638da5cb5b146108e457806391d1485414610902578063943d40e71461094857806394b059ab1461097c57600080fd5b80638462151c14610857578063861ba6f0146108845780638a616bc0146108a45780638c0e05a5146108c457600080fd5b8063715018a6116101b6578063715018a6146107ec578063833b949914610801578063841718a61461081757806384584d071461083757600080fd5b806365f130971461079d57806368428a1b146107b257806370a08231146107cc57600080fd5b806332cb6b0c116102c157806342966c681161025f5780635bbb21771161022e5780635bbb2177146107105780635ea1ef521461073d578063627804af1461075d5780636352211e1461077d57600080fd5b806342966c681461068e578063457dbf21146106ae57806355f804b3146106d05780635944c753146106f057600080fd5b80633ccfd60b1161029b5780633ccfd60b1461062657806340c10f191461063b578063418479a61461064e57806342842e0e1461066e57600080fd5b806332cb6b0c146105d057806336568abe146105e65780633a73c58d1461060657600080fd5b80630f7309e8116103395780632a55205a116103085780632a55205a1461053b5780632bf2762f1461057a5780632eb4a7ab1461059a5780632f2ff15d146105b057600080fd5b80630f7309e8146104b257806318160ddd146104c757806323b872dd146104ea578063248a9ca31461050a57600080fd5b806306fdde031161037557806306fdde0314610430578063081812fc14610452578063089b820e14610472578063095ea7b31461049257600080fd5b8063018cf2421461039c57806301ffc9a7146103de57806304634d8d1461040e575b600080fd5b3480156103a857600080fd5b506013546103c19061010090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ea57600080fd5b506103fe6103f9366004613916565b610b7b565b60405190151581526020016103d5565b34801561041a57600080fd5b5061042e6104293660046137fd565b610b8c565b005b34801561043c57600080fd5b50610445610bb3565b6040516103d59190613ba8565b34801561045e57600080fd5b506103c161046d3660046138da565b610c45565b34801561047e57600080fd5b5061042e61048d3660046138da565b610ca2565b34801561049e57600080fd5b5061042e6104ad366004613689565b610cc9565b3480156104be57600080fd5b50610445610d84565b3480156104d357600080fd5b50600954600854035b6040519081526020016103d5565b3480156104f657600080fd5b5061042e610505366004613559565b610e12565b34801561051657600080fd5b506104dc6105253660046138da565b6000908152600160208190526040909120015490565b34801561054757600080fd5b5061055b6105563660046139d5565b610e1d565b604080516001600160a01b0390931683526020830191909152016103d5565b34801561058657600080fd5b5061042e6105953660046138da565b610ed8565b3480156105a657600080fd5b506104dc60025481565b3480156105bc57600080fd5b5061042e6105cb3660046138f3565b610ef6565b3480156105dc57600080fd5b506104dc6103e881565b3480156105f257600080fd5b5061042e6106013660046138f3565b610f1c565b34801561061257600080fd5b5061042e6106213660046138bf565b610fa9565b34801561063257600080fd5b5061042e610fde565b61042e610649366004613689565b6110f0565b34801561065a57600080fd5b506103fe610669366004613611565b611267565b34801561067a57600080fd5b5061042e610689366004613559565b6112b8565b34801561069a57600080fd5b5061042e6106a93660046138da565b6112d3565b3480156106ba57600080fd5b506003546103fe90640100000000900460ff1681565b3480156106dc57600080fd5b5061042e6106eb366004613950565b6112e1565b3480156106fc57600080fd5b5061042e61070b366004613999565b61130c565b34801561071c57600080fd5b5061073061072b366004613827565b611335565b6040516103d59190613b05565b34801561074957600080fd5b506104dc61075836600461350b565b6113fc565b34801561076957600080fd5b5061042e610778366004613689565b611468565b34801561078957600080fd5b506103c16107983660046138da565b611524565b3480156107a957600080fd5b506104dc600a81565b3480156107be57600080fd5b506013546103fe9060ff1681565b3480156107d857600080fd5b506104dc6107e736600461350b565b611536565b3480156107f857600080fd5b5061042e61159e565b34801561080d57600080fd5b506104dc60105481565b34801561082357600080fd5b5061042e6108323660046138bf565b6115b2565b34801561084357600080fd5b5061042e6108523660046138da565b6115de565b34801561086357600080fd5b5061087761087236600461350b565b611601565b6040516103d59190613b70565b34801561089057600080fd5b506103fe61089f3660046136b3565b611748565b3480156108b057600080fd5b5061042e6108bf3660046138da565b6117a3565b3480156108d057600080fd5b506103fe6108df36600461373d565b6117cd565b3480156108f057600080fd5b506005546001600160a01b03166103c1565b34801561090e57600080fd5b506103fe61091d3660046138f3565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561095457600080fd5b506103c17f000000000000000000000000000000000000000000000000000000000000000081565b34801561098857600080fd5b506104dc600080516020613e0583398151915281565b3480156109aa57600080fd5b5061044561182e565b3480156109bf57600080fd5b506108776109ce36600461370a565b61183d565b3480156109df57600080fd5b506104dc600081565b3480156109f457600080fd5b5061042e610a0336600461365f565b611a10565b348015610a1457600080fd5b506104dc611abf565b348015610a2957600080fd5b5061042e611acf565b348015610a3e57600080fd5b5061042e610a4d366004613595565b611af1565b348015610a5e57600080fd5b50610a72610a6d3660046138da565b611b3c565b6040516103d59190613bbb565b348015610a8b57600080fd5b50610445610a9a3660046138da565b611beb565b348015610aab57600080fd5b5061042e610aba3660046138f3565b611c88565b61042e610acd366004613792565b611cae565b348015610ade57600080fd5b5061042e610aed36600461350b565b611e97565b348015610afe57600080fd5b506103fe610b0d366004613526565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205460ff1690565b348015610b4757600080fd5b5061042e610b5636600461350b565b611eef565b348015610b6757600080fd5b5061042e610b76366004613950565b611f7c565b6000610b8682611fa7565b92915050565b600080516020613e05833981519152610ba481612019565b610bae8383612023565b505050565b6060600a8054610bc290613d2c565b80601f0160208091040260200160405190810160405280929190818152602001828054610bee90613d2c565b8015610c3b5780601f10610c1057610100808354040283529160200191610c3b565b820191906000526020600020905b815481529060010190602001808311610c1e57829003601f168201915b5050505050905090565b6000610c508261212a565b610c86576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506000908152600e60205260409020546001600160a01b031690565b600080516020613e05833981519152610cba81612019565b610cc5826001612156565b5050565b6000610cd482611524565b9050806001600160a01b0316836001600160a01b03161415610d22576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b03821614801590610d425750610d408133610b0d565b155b15610d79576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bae83838361221f565b60118054610d9190613d2c565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbd90613d2c565b8015610e0a5780601f10610ddf57610100808354040283529160200191610e0a565b820191906000526020600020905b815481529060010190602001808311610ded57829003601f168201915b505050505081565b610bae838383612288565b60008281526007602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff16928201929092528291610e9c5750604080518082019091526006546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090610ec0906bffffffffffffffffffffffff1687613cb3565b610eca9190613c9f565b915196919550909350505050565b600080516020613e05833981519152610ef081612019565b50601055565b60008281526001602081905260409091200154610f1281612019565b610bae83836124ab565b6001600160a01b0381163314610f9f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610cc58282612532565b600080516020613e05833981519152610fc181612019565b6003805464ff000000001916640100000000841515021790555050565b610fe66125b5565b600260005414156110395760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610f96565b600260009081556040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169047908381818185875af1925050503d80600081146110a8576040519150601f19603f3d011682016040523d82523d6000602084013e6110ad565b606091505b50509050806110e8576040517f750b219c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001600055565b60135460ff1661112c576040517fe707b04f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611137816005613cb3565b6103e88161114460085490565b61114e9190613c68565b111561116d57604051638f0c6ebf60e01b815260040160405180910390fd5b600260005414156111c05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610f96565b6002600055600a821115611200576040517fcd194ce000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b346010548361120f9190613cb3565b1461122d576040516352a8207f60e11b815260040160405180910390fd5b6112418361123c846005613cb3565b61260f565b60135461125d9061010090046001600160a01b03166001611a10565b5050600160005550565b6040516bffffffffffffffffffffffff19606084901b16602082015260009081906034016040516020818303038152906040528051906020012090506112b08360025483612629565b949350505050565b610bae83838360405180602001604052806000815250611af1565b6112de81600161263f565b50565b600080516020613e058339815191526112f981612019565b8151610bae906012906020850190613360565b600080516020613e0583398151915261132481612019565b61132f848484612649565b50505050565b805160609060008167ffffffffffffffff81111561135557611355613dd8565b6040519080825280602002602001820160405280156113a057816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816113735790505b50905060005b8281146113f4576113cf8582815181106113c2576113c2613dc2565b6020026020010151611b3c565b8282815181106113e1576113e1613dc2565b60209081029190910101526001016113a6565b509392505050565b6001600160a01b03811660009081526004602090815260408083208151808301909252546001600160e01b038116825263ffffffff600160e01b9091048116928201839052600354919291161415611455578051611458565b60005b6001600160e01b03169392505050565b600080516020613e0583398151915261148081612019565b816103e88161148e60085490565b6114989190613c68565b11156114b757604051638f0c6ebf60e01b815260040160405180910390fd5b6002600054141561150a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610f96565b6002600055611519848461260f565b505060016000555050565b600061152f82612761565b5192915050565b60006001600160a01b038216611578576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001600160a01b03166000908152600d602052604090205467ffffffffffffffff1690565b6115a66125b5565b6115b06000612896565b565b600080516020613e058339815191526115ca81612019565b506013805460ff1916911515919091179055565b600080516020613e058339815191526115f681612019565b610cc5826000612156565b6060600080600061161185611536565b905060008167ffffffffffffffff81111561162e5761162e613dd8565b604051908082528060200260200182016040528015611657578160200160208202803683370190505b50604080516060810182526000808252602082018190529181018290529192505b83861461173c576000818152600c6020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff161580159282019290925292506116df57611734565b81516001600160a01b0316156116f457815194505b876001600160a01b0316856001600160a01b03161415611734578083878060010198508151811061172757611727613dc2565b6020026020010181815250505b600101611678565b50909695505050505050565b6040516bffffffffffffffffffffffff19606085901b1660208201526034810183905260009081906054016040516020818303038152906040528051906020012090506117988360025483612629565b9150505b9392505050565b600080516020613e058339815191526117bb81612019565b50600090815260076020526040812055565b6040516bffffffffffffffffffffffff19606086901b166020820152603481018490526054810183905260009081906074016040516020818303038152906040528051906020012090506118248360025483612629565b9695505050505050565b6060600b8054610bc290613d2c565b6060818310611878576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008546000908084111561188a578093505b600061189587611536565b9050848610156118b457858503818110156118ae578091505b506118b8565b5060005b60008167ffffffffffffffff8111156118d3576118d3613dd8565b6040519080825280602002602001820160405280156118fc578160200160208202803683370190505b5090508161190f57935061179c92505050565b600061191a88611b3c565b90506000816040015161192b575080515b885b88811415801561193d5750848714155b156119ff576000818152600c6020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff161580159282019290925293506119a2576119f7565b82516001600160a01b0316156119b757825191505b8a6001600160a01b0316826001600160a01b031614156119f757808488806001019950815181106119ea576119ea613dc2565b6020026020010181815250505b60010161192d565b505050928352509095945050505050565b6001600160a01b038216331415611a53576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152600f602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000611aca60085490565b905090565b600080516020613e05833981519152611ae781612019565b6112de6000600655565b611afc848484612288565b6001600160a01b0383163b15158015611b1e5750611b1c848484846128f5565b155b1561132f576040516368d2bf6b60e11b815260040160405180910390fd5b6040805160608082018352600080835260208084018290528385018290528451928301855281835282018190529281018390529091506008548310611b815792915050565b506000828152600c6020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff161580159282019290925290611be25792915050565b61179c83612761565b6060611bf68261212a565b611c2c576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611c366129e9565b9050805160001415611c57576040518060200160405280600081525061179c565b80611c61846129f8565b604051602001611c72929190613a23565b6040516020818303038152906040529392505050565b60008281526001602081905260409091200154611ca481612019565b610bae8383612532565b600354640100000000900460ff16611cf2576040517f4c34343a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84838383611d02848484846117cd565b611d38576040517f60cea48b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8888886000611d46846113fc565b905081611d538483613c68565b1115611d8b576040517f651884e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d968c6005613cb3565b6103e881611da360085490565b611dad9190613c68565b1115611dcc57604051638f0c6ebf60e01b815260040160405180910390fd5b60026000541415611e1f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610f96565b600260005534611e2f8c8f613cb3565b14611e4d576040516352a8207f60e11b815260040160405180910390fd5b611e578e8e612af6565b611e668e61123c8f6005613cb3565b601354611e829061010090046001600160a01b03166001611a10565b50506001600055505050505050505050505050565b600080516020613e05833981519152611eaf81612019565b50601380546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b611ef76125b5565b6001600160a01b038116611f735760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610f96565b6112de81612896565b600080516020613e05833981519152611f9481612019565b8151610bae906011906020850190613360565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061200a57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610b865750610b8682612be0565b6112de8133612beb565b6127106bffffffffffffffffffffffff821611156120965760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610f96565b6001600160a01b0382166120ec5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610f96565b604080518082019091526001600160a01b039092168083526bffffffffffffffffffffffff9091166020909201829052600160a01b90910217600655565b600060085482108015610b865750506000908152600c6020526040902054600160e01b900460ff161590565b600354640100000000900460ff161561219b576040517fc2ef408100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002829055806121e05760038054600191906000906121c190849063ffffffff16613c80565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b7f1b930366dfeaa7eb3b325021e4ae81e36527063452ee55b86c95f85b36f4c31c60025460405161221391815260200190565b60405180910390a15050565b6000828152600e6020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061229382612761565b9050836001600160a01b031681600001516001600160a01b0316146122e4576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000336001600160a01b038616148061230257506123028533610b0d565b8061231d57503361231284610c45565b6001600160a01b0316145b90508061233d57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03841661237d576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123896000848761221f565b6001600160a01b038581166000908152600d60209081526040808320805467ffffffffffffffff1980821667ffffffffffffffff92831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600c90945282852080546001600160e01b031916909417600160a01b4290921691909102178355870180845292208054919390911661245f57600854821461245f578054602086015167ffffffffffffffff16600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff16610cc55760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff1615610cc55760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6005546001600160a01b031633146115b05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610f96565b610cc5828260405180602001604052806000815250612c6b565b6000826126368584612c78565b14949350505050565b6117bb8282612cbd565b6127106bffffffffffffffffffffffff821611156126bc5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610f96565b6001600160a01b0382166127125760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606401610f96565b6040805180820182526001600160a01b0393841681526bffffffffffffffffffffffff92831660208083019182526000968752600790529190942093519051909116600160a01b029116179055565b604080516060810182526000808252602082018190529181019190915281600854811015612864576000818152600c6020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff161515918101829052906128625780516001600160a01b0316156127f8579392505050565b50600019016000818152600c6020908152604091829020825160608101845290546001600160a01b038116808352600160a01b820467ffffffffffffffff1693830193909352600160e01b900460ff161515928101929092521561285d579392505050565b6127f8565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061292a903390899088908890600401613ad3565b602060405180830381600087803b15801561294457600080fd5b505af1925050508015612974575060408051601f3d908101601f1916820190925261297191810190613933565b60015b6129cf573d8080156129a2576040519150601f19603f3d011682016040523d82523d6000602084013e6129a7565b606091505b5080516129c7576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506112b0565b606060128054610bc290613d2c565b606081612a1c5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612a465780612a3081613d67565b9150612a3f9050600a83613c9f565b9150612a20565b60008167ffffffffffffffff811115612a6157612a61613dd8565b6040519080825280601f01601f191660200182016040528015612a8b576020820181803683370190505b5090505b84156112b057612aa0600183613cd2565b9150612aad600a86613d82565b612ab8906030613c68565b60f81b818381518110612acd57612acd613dc2565b60200101906001600160f81b031916908160001a905350612aef600a86613c9f565b9450612a8f565b6001600160a01b0382166000908152600460205260409020805460035463ffffffff908116600160e01b9092041614612b56576003546001600160e01b031963ffffffff909116600160e01b02166001600160e01b038316178155612b98565b805482908290600090612b739084906001600160e01b0316613c46565b92506101000a8154816001600160e01b0302191690836001600160e01b031602179055505b826001600160a01b03167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a83604051612bd391815260200190565b60405180910390a2505050565b6000610b8682612eb4565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff16610cc557612c29816001600160a01b03166014612ef2565b612c34836020612ef2565b604051602001612c45929190613a52565b60408051601f198184030181529082905262461bcd60e51b8252610f9691600401613ba8565b610bae83838360016130b7565b600081815b84518110156113f457612ca982868381518110612c9c57612c9c613dc2565b60200260200101516132ca565b915080612cb581613d67565b915050612c7d565b6000612cc883612761565b80519091508215612d2e576000336001600160a01b0383161480612cf15750612cf18233610b0d565b80612d0c575033612d0186610c45565b6001600160a01b0316145b905080612d2c57604051632ce44b5f60e11b815260040160405180910390fd5b505b612d3a6000858361221f565b6001600160a01b038082166000818152600d60209081526040808320805470010000000000000000000000000000000060001967ffffffffffffffff80841691909101811667ffffffffffffffff19841681178390048216600190810183169093027fffffffffffffffff0000000000000000ffffffffffffffff0000000000000000909416179290921783558b8652600c90945282852080547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff42909316600160a01b026001600160e01b03199091169097179690961716600160e01b178555918901808452922080549194909116612e69576008548214612e69578054602087015167ffffffffffffffff16600160a01b026001600160e01b03199091166001600160a01b038716171781555b5050604051869250600091506001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a450506009805460010190555050565b60006001600160e01b031982167f2a55205a000000000000000000000000000000000000000000000000000000001480610b865750610b86826132f9565b60606000612f01836002613cb3565b612f0c906002613c68565b67ffffffffffffffff811115612f2457612f24613dd8565b6040519080825280601f01601f191660200182016040528015612f4e576020820181803683370190505b509050600360fc1b81600081518110612f6957612f69613dc2565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612fb457612fb4613dc2565b60200101906001600160f81b031916908160001a9053506000612fd8846002613cb3565b612fe3906001613c68565b90505b6001811115613068577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061302457613024613dc2565b1a60f81b82828151811061303a5761303a613dc2565b60200101906001600160f81b031916908160001a90535060049490941c9361306181613d15565b9050612fe6565b50831561179c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610f96565b6008546001600160a01b0385166130fa576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83613131576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0385166000818152600d6020908152604080832080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000811667ffffffffffffffff8083168c0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168c01811690920217909155858452600c90925290912080546001600160e01b031916909217600160a01b4290921691909102179055808085018380156131f257506001600160a01b0387163b15155b1561327b575b60405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461324360008884806001019550886128f5565b613260576040516368d2bf6b60e11b815260040160405180910390fd5b808214156131f857826008541461327657600080fd5b6132c1565b5b6040516001830192906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48082141561327c575b506008556124a4565b60008183106132e657600082815260208490526040902061179c565b600083815260208390526040902061179c565b60006001600160e01b031982167f7965db0b000000000000000000000000000000000000000000000000000000001480610b8657507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610b86565b82805461336c90613d2c565b90600052602060002090601f01602090048101928261338e57600085556133d4565b82601f106133a757805160ff19168380011785556133d4565b828001600101855582156133d4579182015b828111156133d45782518255916020019190600101906133b9565b506133e09291506133e4565b5090565b5b808211156133e057600081556001016133e5565b600067ffffffffffffffff83111561341357613413613dd8565b613426601f8401601f1916602001613bf1565b905082815283838301111561343a57600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b038116811461346857600080fd5b919050565b600082601f83011261347e57600080fd5b8135602061349361348e83613c22565b613bf1565b80838252828201915082860187848660051b89010111156134b357600080fd5b60005b858110156134d2578135845292840192908401906001016134b6565b5090979650505050505050565b8035801515811461346857600080fd5b80356bffffffffffffffffffffffff8116811461346857600080fd5b60006020828403121561351d57600080fd5b61179c82613451565b6000806040838503121561353957600080fd5b61354283613451565b915061355060208401613451565b90509250929050565b60008060006060848603121561356e57600080fd5b61357784613451565b925061358560208501613451565b9150604084013590509250925092565b600080600080608085870312156135ab57600080fd5b6135b485613451565b93506135c260208601613451565b925060408501359150606085013567ffffffffffffffff8111156135e557600080fd5b8501601f810187136135f657600080fd5b613605878235602084016133f9565b91505092959194509250565b6000806040838503121561362457600080fd5b61362d83613451565b9150602083013567ffffffffffffffff81111561364957600080fd5b6136558582860161346d565b9150509250929050565b6000806040838503121561367257600080fd5b61367b83613451565b9150613550602084016134df565b6000806040838503121561369c57600080fd5b6136a583613451565b946020939093013593505050565b6000806000606084860312156136c857600080fd5b6136d184613451565b925060208401359150604084013567ffffffffffffffff8111156136f457600080fd5b6137008682870161346d565b9150509250925092565b60008060006060848603121561371f57600080fd5b61372884613451565b95602085013595506040909401359392505050565b6000806000806080858703121561375357600080fd5b61375c85613451565b93506020850135925060408501359150606085013567ffffffffffffffff81111561378657600080fd5b6136058782880161346d565b600080600080600060a086880312156137aa57600080fd5b6137b386613451565b9450602086013593506040860135925060608601359150608086013567ffffffffffffffff8111156137e457600080fd5b6137f08882890161346d565b9150509295509295909350565b6000806040838503121561381057600080fd5b61381983613451565b9150613550602084016134ef565b6000602080838503121561383a57600080fd5b823567ffffffffffffffff81111561385157600080fd5b8301601f8101851361386257600080fd5b803561387061348e82613c22565b80828252848201915084840188868560051b870101111561389057600080fd5b600094505b838510156138b3578035835260019490940193918501918501613895565b50979650505050505050565b6000602082840312156138d157600080fd5b61179c826134df565b6000602082840312156138ec57600080fd5b5035919050565b6000806040838503121561390657600080fd5b8235915061355060208401613451565b60006020828403121561392857600080fd5b813561179c81613dee565b60006020828403121561394557600080fd5b815161179c81613dee565b60006020828403121561396257600080fd5b813567ffffffffffffffff81111561397957600080fd5b8201601f8101841361398a57600080fd5b6112b0848235602084016133f9565b6000806000606084860312156139ae57600080fd5b833592506139be60208501613451565b91506139cc604085016134ef565b90509250925092565b600080604083850312156139e857600080fd5b50508035926020909101359150565b60008151808452613a0f816020860160208601613ce9565b601f01601f19169290920160200192915050565b60008351613a35818460208801613ce9565b835190830190613a49818360208801613ce9565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613a8a816017850160208801613ce9565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613ac7816028840160208801613ce9565b01602801949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261182460808301846139f7565b6020808252825182820181905260009190848201906040850190845b8181101561173c57613b5d83855180516001600160a01b0316825260208082015167ffffffffffffffff16908301526040908101511515910152565b9284019260609290920191600101613b21565b6020808252825182820181905260009190848201906040850190845b8181101561173c57835183529284019291840191600101613b8c565b60208152600061179c60208301846139f7565b81516001600160a01b0316815260208083015167ffffffffffffffff169082015260408083015115159082015260608101610b86565b604051601f8201601f1916810167ffffffffffffffff81118282101715613c1a57613c1a613dd8565b604052919050565b600067ffffffffffffffff821115613c3c57613c3c613dd8565b5060051b60200190565b60006001600160e01b03808316818516808303821115613a4957613a49613d96565b60008219821115613c7b57613c7b613d96565b500190565b600063ffffffff808316818516808303821115613a4957613a49613d96565b600082613cae57613cae613dac565b500490565b6000816000190483118215151615613ccd57613ccd613d96565b500290565b600082821015613ce457613ce4613d96565b500390565b60005b83811015613d04578181015183820152602001613cec565b8381111561132f5750506000910152565b600081613d2457613d24613d96565b506000190190565b600181811c90821680613d4057607f821691505b60208210811415613d6157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613d7b57613d7b613d96565b5060010190565b600082613d9157613d91613dac565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146112de57600080fdfed8acb51ff3d48f690a25887aaf234c4ae5a66ab9839243cd8e2b639cade0663ba2646970667358221220aff5a26624fbe3ad10d029c8b009ae61fa595bffad53bca6ec1225cc21947eb664736f6c634300080700330000000000000000000000009e91d1e6cbc1341d7a8235214491ba1521dfa9a4