60c06040526005608081905264173539b7b760d91b60a09081526200002891601691906200065b565b503480156200003657600080fd5b506040516200483638038062004836833981016040819052620000599162000701565b6040805160208082018352600080835283519182019093529182529062000080336200017e565b8151620000959060019060208501906200065b565b508051620000ab9060029060208401906200065b565b505050620001126040518060400160405280601681526020017f4469676944616967616b754461726b537069726974730000000000000000000081525060405180604001604052806005815260200164044494453560dc1b815250620001ce60201b60201c565b620001526040518060600160405280602e815260200162004808602e9139604080518082019091526005815264173539b7b760d91b60208201526200023a565b6200015e600a62000297565b6200016a8282620002e3565b62000175836200032f565b505050620007f5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620001d8620003a5565b60075460ff1615620001fd576040516376f1a0b360e01b815260040160405180910390fd5b8151620002129060089060208501906200065b565b508051620002289060099060208401906200065b565b50506007805460ff1916600117905550565b62000244620003a5565b601454610100900460ff16156200026e57604051635b79f68360e01b815260040160405180910390fd5b6200027982620003d3565b62000284816200042f565b50506014805461ff001916610100179055565b620002a1620003a5565b600c5460ff1615620002c657604051630e009cb560e11b815260040160405180910390fd5b620002d18162000480565b600d55600c805460ff19166001179055565b620002ed620003a5565b60145460ff16156200031257604051639383013960e01b815260040160405180910390fd5b6200031e8282620004c5565b50506014805460ff19166001179055565b62000339620003a5565b601854156200035e57604051600162056bb360e21b0319815260040160405180910390fd5b806200037d5760405163e776bd1160e01b815260040160405180910390fd5b600019811415620003a057604051620e9cb160e71b815260040160405180910390fd5b601855565b6000546001600160a01b03163314620003d15760405163097b5fdb60e31b815260040160405180910390fd5b565b620003dd620003a5565b8051620003f29060159060208401906200065b565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f68160405162000424919062000760565b60405180910390a150565b62000439620003a5565b80516200044e9060169060208401906200065b565b507f65ccd57f8a46e7a6cfc4d214d84094e8ba5561ab50fd328f26e4c44052ffeba08160405162000424919062000760565b806200049f5760405163318ccdef60e11b815260040160405180910390fd5b6064811115620004c257604051639cb75faf60e01b815260040160405180910390fd5b50565b620004cf620003a5565b6103e86001600160601b0382161115620004fc57604051631557c04f60e21b815260040160405180910390fd5b62000508828262000556565b604080516001600160a01b03841681526001600160601b03831660208201527f23813f5ad446622633cb58c75ceef768a2111751b0f30477a63e06fcaedcff60910160405180910390a15050565b6127106001600160601b0382161115620005ca5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b038216620006225760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401620005c1565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217601255565b8280546200066990620007b8565b90600052602060002090601f0160209004810192826200068d5760008555620006d8565b82601f10620006a857805160ff1916838001178555620006d8565b82800160010185558215620006d8579182015b82811115620006d8578251825591602001919060010190620006bb565b50620006e6929150620006ea565b5090565b5b80821115620006e65760008155600101620006eb565b6000806000606084860312156200071757600080fd5b835160208501519093506001600160a01b03811681146200073757600080fd5b60408501519092506001600160601b03811681146200075557600080fd5b809150509250925092565b600060208083528351808285015260005b818110156200078f5785810183015185820160400152820162000771565b81811115620007a2576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c90821680620007cd57607f821691505b60208210811415620007ef57634e487b7160e01b600052602260045260246000fd5b50919050565b61400380620008056000396000f3fe608060405234801561001057600080fd5b506004361061034c5760003560e01c8063816a1501116101bd578063b3bcea48116100f9578063d5abeb01116100a2578063e985e9c51161007c578063e985e9c514610876578063f1e923c5146108b2578063f2fde38b146108c5578063f5234c56146108d857600080fd5b8063d5abeb0114610847578063e2989f4c14610850578063e370ab461461086357600080fd5b8063c87b56dd116100d3578063c87b56dd14610819578063d147c97a1461082c578063d547cfb71461083f57600080fd5b8063b3bcea48146107eb578063b88d4fde146107f3578063c05e2f441461080657600080fd5b806395d89b4111610166578063a22cb46511610140578063a22cb4651461074e578063aa6cab5a14610761578063aca139f7146107c5578063b39fa000146107d857600080fd5b806395d89b411461072057806395fa0ff5146107285780639bc17ea41461073b57600080fd5b80638c5f36bb116101975780638c5f36bb146106c65780638da5cb5b146106d957806391623718146106ea57600080fd5b8063816a150114610698578063869f9110146106ab5780638be18e57146106b357600080fd5b8063301be7401161028c57806355f804b31161023557806370a082311161020f57806370a082311461061f57806375794a3c146106405780637e10b35b146106495780637f1a5ce11461065c57600080fd5b806355f804b3146105c95780636352211e146105dc578063703fa929146105ef57600080fd5b80634e02c078116102665780634e02c0781461057b57806351dadc281461058e57806353401df9146105b657600080fd5b8063301be7401461052957806342842e0e1461055557806346d362111461056857600080fd5b80630f3d911c116102f957806323b872dd116102d357806323b872dd146104be578063247946c9146104d15780632a55205a146104e45780632ebb386a1461051657600080fd5b80630f3d911c146103f4578063113405571461041457806311ad4081146104ab57600080fd5b8063070cba171161032a578063070cba17146103a3578063081812fc146103b6578063095ea7b3146103e157600080fd5b806301ffc9a71461035157806302fa7c471461037957806306fdde031461038e575b600080fd5b61036461035f36600461380d565b6108eb565b60405190151581526020015b60405180910390f35b61038c610387366004613846565b61092f565b005b6103966109de565b60405161037091906138e6565b61038c6103b13660046138f9565b610a70565b6103c96103c4366004613914565b610cd4565b6040516001600160a01b039091168152602001610370565b61038c6103ef36600461392d565b610cfb565b610407610402366004613957565b610e32565b6040516103709190613983565b6104746104223660046139fc565b601160209081526000938452604080852082529284528284209052825290205460ff81169063ffffffff610100820481169167ffffffffffffffff6501000000000082041691600160681b9091041684565b60408051941515855263ffffffff938416602086015267ffffffffffffffff90921691840191909152166060820152608001610370565b61038c6104b9366004613a45565b61104c565b61038c6104cc366004613a67565b61106c565b61038c6104df366004613b4f565b6110f3565b6104f76104f2366004613a45565b611162565b604080516001600160a01b039093168352602083019190915201610370565b61038c610524366004613957565b61121d565b6103646105373660046138f9565b6001600160a01b03166000908152600b602052604090205460ff1690565b61038c610563366004613a67565b61123b565b61038c610576366004613bb3565b611256565b61038c610589366004613c28565b611393565b6105a161059c366004613c28565b6113b0565b60405163ffffffff9091168152602001610370565b61038c6105c4366004613a45565b611406565b61038c6105d7366004613c4d565b611422565b6103c96105ea366004613914565b611478565b6106026105fd366004613c28565b6114dd565b604080519315158452602084019290925290820152606001610370565b61063261062d3660046138f9565b61157d565b604051908152602001610370565b61063260175481565b61038c6106573660046138f9565b611617565b61036461066a366004613c82565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205460ff1690565b6106326106a6366004613c28565b611850565b600d54610632565b61038c6106c1366004613c4d565b611885565b61038c6106d43660046138f9565b6118d0565b6000546001600160a01b03166103c9565b6106326106f8366004613957565b60009182526010602090815260408084206001600160a01b0393909316845291905290205490565b61039661191f565b61038c610736366004613846565b61192e565b61038c610749366004613914565b61198e565b61038c61075c366004613cba565b6119a8565b61079d61076f3660046138f9565b600b6020526000908152604090205460ff81169061010090046fffffffffffffffffffffffffffffffff1682565b6040805192151583526fffffffffffffffffffffffffffffffff909116602083015201610370565b61038c6107d3366004613a67565b6119b3565b61038c6107e6366004613914565b6119df565b610396611a3f565b61038c610801366004613ce6565b611acd565b61038c610814366004613cba565b611b5b565b610396610827366004613914565b611c0d565b61038c61083a366004613b4f565b611cbd565b610396611d3b565b61063260185481565b6103c961085e366004613914565b611d48565b61038c610871366004613a67565b611d72565b610364610884366004613c82565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b61038c6108c0366004613957565b611d83565b61038c6108d33660046138f9565b611da0565b61038c6108e6366004613914565b611de8565b60006001600160e01b031982167ff5234c56000000000000000000000000000000000000000000000000000000001480610929575061092982611ea2565b92915050565b610937611f14565b6103e86bffffffffffffffffffffffff82161115610981576040517f555f013c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61098b8282611f5a565b604080516001600160a01b03841681526bffffffffffffffffffffffff831660208201527f23813f5ad446622633cb58c75ceef768a2111751b0f30477a63e06fcaedcff60910160405180910390a15050565b6060600880546109ed90613d62565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1990613d62565b8015610a665780601f10610a3b57610100808354040283529160200191610a66565b820191906000526020600020905b815481529060010190602001808311610a4957829003601f168201915b5050505050905090565b610a78611f14565b6001600160a01b0381166000908152600b602052604090205460ff16610aca576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166000908152600b6020526040812054600a546101009091046fffffffffffffffffffffffffffffffff169190610b0c90600190613db3565b905080826fffffffffffffffffffffffffffffffff1614610c3a57600a8181548110610b3a57610b3a613dca565b600091825260209091200154600a80546001600160a01b03909216916fffffffffffffffffffffffffffffffff8516908110610b7857610b78613dca565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600b6000600a856fffffffffffffffffffffffffffffffff1681548110610bd057610bd0613dca565b60009182526020808320909101546001600160a01b03168352820192909252604001902080546fffffffffffffffffffffffffffffffff92909216610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9092169190911790555b600a805480610c4b57610c4b613de0565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b038516808352600b82526040808420805470ffffffffffffffffffffffffffffffffff1916905551928352917fe152843d7324c2cb58e95865f2b78d38f2dab6ce9eadf09438ec2c41e78c705e910160405180910390a2505050565b6000610cdf82612074565b506000908152600560205260409020546001600160a01b031690565b6000610d0682611478565b9050806001600160a01b0316836001600160a01b03161415610d955760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b0382161480610db15750610db18133610884565b610e235760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610d8c565b610e2d83836120d8565b505050565b60008281526010602090815260408083206001600160a01b03851684529091529020546060908067ffffffffffffffff811115610e7157610e71613aa3565b604051908082528060200260200182016040528015610ec357816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610e8f5790505b5060008581526010602090815260408083206001600160a01b0388168452825280832080548251818502810185019093528083529496509293909291830182828015610f5a57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610f1d5790505b5050505050905060005b828110156110435760008681526011602090815260408083206001600160a01b038916845290915281208351909190849084908110610fa557610fa5613dca565b60209081029190910181015163ffffffff90811683528282019390935260409182016000208251608081018452905460ff811615158252610100810485169282019290925267ffffffffffffffff6501000000000083041692810192909252600160681b90049091166060820152845185908390811061102757611027613dca565b60200260200101819052508061103c90613df6565b9050610f64565b50505092915050565b611054612146565b61105d82612185565b6110688233836121cd565b5050565b61107633826125e2565b6110e85760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610d8c565b610e2d838383612661565b6110fb611f14565b601454610100900460ff161561113d576040517f5b79f68300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114682611422565b61114f81611885565b50506014805461ff001916610100179055565b60008281526013602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff169282019290925282916111e15750604080518082019091526012546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090611205906bffffffffffffffffffffffff1687613e11565b61120f9190613e46565b915196919550909350505050565b61122681612839565b61122f8261288c565b611068828260006128d6565b610e2d83838360405180602001604052806000815250611acd565b61125e611f14565b8080611296576040517f196b282600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601754806112a2575060015b600060016112b08484613e5a565b6112ba9190613db3565b60185490915080821115611304576040517fea0582460000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610d8c565b82840160175560005b8481101561138a57600087878381811061132957611329613dca565b905060200201602081019061133e91906138f9565b90506001600160a01b038116156113815761138188888481811061136457611364613dca565b905060200201602081019061137991906138f9565b838701612bbf565b5060010161130d565b50505050505050565b61139c82612839565b6113a58361288c565b610e2d8383836121cd565b601060205282600052604060002060205281600052604060002081815481106113d857600080fd5b906000526020600020906008918282040191900660040292509250509054906101000a900463ffffffff1681565b61140e612146565b61141782612185565b611068823383612bc9565b61142a611f14565b805161143d90601590602084019061373d565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f68160405161146d91906138e6565b60405180910390a150565b6000818152600360205260408120546001600160a01b0316806109295760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610d8c565b6000808063ffffffff84111561151f576040517f3f8ace8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505060009283526011602090815260408085206001600160a01b0394909416855292815282842063ffffffff9283168552905291205460ff81169265010000000000820467ffffffffffffffff1692600160681b90920490911690565b60006001600160a01b0382166115fb5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610d8c565b506001600160a01b031660009081526004602052604090205490565b61161f611f14565b6001600160a01b0381166000908152600b602052604090205460ff1615611672576040517fb73e95e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516301ffc9a760e01b81527f977e0c1c0000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b1580156116d157600080fd5b505afa1580156116e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117099190613e72565b61173f576040517f90c51dd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a546fffffffffffffffffffffffffffffffff81111561178c576040517fd571eff200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600b602090815260408083208054600170ffffffffffffffffffffffffffffffffff199091166101006fffffffffffffffffffffffffffffffff891602178117909155600a8054808301825594527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890930180546001600160a01b03191685179055519182527fe152843d7324c2cb58e95865f2b78d38f2dab6ce9eadf09438ec2c41e78c705e910160405180910390a25050565b60008060006118608686866114dd565b50915091508161187157600061187b565b61187b8142613db3565b9695505050505050565b61188d611f14565b80516118a090601690602084019061373d565b507f65ccd57f8a46e7a6cfc4d214d84094e8ba5561ab50fd328f26e4c44052ffeba08160405161146d91906138e6565b6000546001600160a01b031615611913576040517f9b07432800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61191c81612ee6565b50565b6060600980546109ed90613d62565b611936611f14565b60145460ff1615611973576040517f9383013900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61197d828261092f565b50506014805460ff19166001179055565b611996612146565b61199f81612185565b61191c81612f36565b611068338383612fdd565b6119bb612146565b6119c481612185565b610e2d838383604051806020016040528060008152506130a4565b6119e7611f14565b600c5460ff1615611a24576040517f1c01396a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a2d8161312d565b600d55600c805460ff19166001179055565b60168054611a4c90613d62565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7890613d62565b8015611ac55780601f10611a9a57610100808354040283529160200191611ac5565b820191906000526020600020905b815481529060010190602001808311611aa857829003601f168201915b505050505081565b611ad733836125e2565b611b495760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610d8c565b611b55848484846130a4565b50505050565b336001600160a01b038316811415611b9f576040517fa7fecee600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038181166000818152600f6020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f83347dcc77580bb841ae3bac834b5b8ac5ccd2326276d265e638987eb6b2c05691015b60405180910390a3505050565b6000818152600360205260409020546060906001600160a01b0316611c5e576040517fb1d04f0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611c6861319f565b90506000815111611c885760405180602001604052806000815250611cb6565b80611c92846131ae565b6016604051602001611ca693929190613e8f565b6040516020818303038152906040525b9392505050565b611cc5611f14565b60075460ff1615611d02576040517f76f1a0b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151611d1590600890602085019061373d565b508051611d2990600990602084019061373d565b50506007805460ff1916600117905550565b60158054611a4c90613d62565b600a8181548110611d5857600080fd5b6000918252602090912001546001600160a01b0316905081565b611d7a612146565b6110e881612185565b611d8b611f14565b611d9481612839565b611068828260016128d6565b611da8611f14565b6001600160a01b038116611913576040517ff82d512f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611df0611f14565b60185415611e2a576040517fffea513400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80611e61576040517fe776bd1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600019811415611e9d576040517f074e588000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601855565b60006001600160e01b031982167f95fa0ff5000000000000000000000000000000000000000000000000000000001480611f0557506001600160e01b031982167f247946c900000000000000000000000000000000000000000000000000000000145b806109295750610929826132e0565b6000546001600160a01b03163314611f58576040517f4bdafed800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6127106bffffffffffffffffffffffff82161115611fe05760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c655072696365000000000000000000000000000000000000000000006064820152608401610d8c565b6001600160a01b0382166120365760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610d8c565b604080518082019091526001600160a01b039092168083526bffffffffffffffffffffffff9091166020909201829052600160a01b90910217601255565b6000818152600360205260409020546001600160a01b031661191c5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610d8c565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061210d82611478565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61214f33610537565b611f58576040517f9eea455500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61219761219182611478565b3361066a565b61191c576040517f362df0d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006121dd8686866114dd565b9250925092508261221a576040517f20f59f0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008681526010602090815260408083206001600160a01b038916845290915281205485919061224c90600190613db3565b90508083146123bb5760008881526010602090815260408083206001600160a01b038b168452909152902080548290811061228957612289613dca565b600091825260208083206008830401548b84526010825260408085206001600160a01b038d1686529092529220805460079092166004026101000a90920463ffffffff169190859081106122df576122df613dca565b600091825260208083206008830401805460079093166004026101000a63ffffffff8181021990941695909316929092029390931790558981526011825260408082206001600160a01b038b168084529084528183208c84526010855282842091845293528120805486939291908590811061235d5761235d613dca565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff90811684529083019390935260409091019020805470ffffffff000000000000000000000000001916600160681b93909216929092021790555b60008881526010602090815260408083206001600160a01b038b16845290915290208054806123ec576123ec613de0565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a810219909116909155929093558a81526011835260408082206001600160a01b038c16835284528082209286168252919092528120805470ffffffffffffffffffffffffffffffffff1916905561246a89611478565b9050876001600160a01b0316816001600160a01b03168a7f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee8a6000806040516124c89392919092835290151560208301521515604082015260600190565b60405180910390a4876001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b15801561250957600080fd5b505afa15801561251d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125419190613e72565b15612567576000898152600e60205260408120805490919061256290613f53565b909155505b604051636d4229c960e01b81526001600160a01b038281166004830152602482018b90526044820189905260648201879052891690636d4229c990608401600060405180830381600087803b1580156125bf57600080fd5b505af11580156125d3573d6000803e3d6000fd5b50505050505050505050505050565b6000806125ee83611478565b9050806001600160a01b0316846001600160a01b0316148061263557506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b806126595750836001600160a01b031661264e84610cd4565b6001600160a01b0316145b949350505050565b826001600160a01b031661267482611478565b6001600160a01b0316146126f05760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610d8c565b6001600160a01b03821661276b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d8c565b61277683838361331e565b6127816000826120d8565b6001600160a01b03831660009081526004602052604081208054600192906127aa908490613db3565b90915550506001600160a01b03821660009081526004602052604081208054600192906127d8908490613e5a565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0381166000908152600b602052604090205460ff161561191c576040517fc0f8cffb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361289682611478565b6001600160a01b03161461191c576040517fb23b68b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006128e184611478565b60008581526010602090815260408083206001600160a01b038816845290915281205491925050836001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b15801561294157600080fd5b505afa158015612955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129799190613e72565b156129a2576000858152600e60205260408120805483929061299c908490613db3565b90915550505b60005b81811015612b8c5760008681526010602090815260408083206001600160a01b038916845290915281208054839081106129e1576129e1613dca565b600091825260208083206008830401548a84526011825260408085206001600160a01b038c8116808852918552828720600790961660040261010090810a90940463ffffffff9081168089529686528388208451608081018652905460ff81161515825295860482168188015265010000000000860467ffffffffffffffff16818601819052600160681b9096049091166060808301919091528451888152968701989098528c151593860193909352949650909491939092908916918c917f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee910160405180910390a460008981526011602090815260408083206001600160a01b038c811680865291845282852063ffffffff8916808752945293829020805470ffffffffffffffffffffffffffffffffff191690559051636d4229c960e01b81529289166004840152602483018c905260448301919091526064820183905290636d4229c990608401600060405180830381600087803b158015612b6657600080fd5b505af1158015612b7a573d6000803e3d6000fd5b505050508360010193505050506129a5565b5060008581526010602090815260408083206001600160a01b03881684529091528120612bb8916137c1565b5050505050565b6110688282613364565b6000612bd68484846114dd565b505090508015612c12576040517f7f53cfe300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526010602090815260408083206001600160a01b0387168452909152902054600d548110612c70576040517ff8315a8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526010602090815260408083206001600160a01b03881680855290835281842080546001808201835591865284862060088204018054600790921660040261010090810a63ffffffff818102199094168c8516918202179092558c88526011875285882094885293865284872081885290955292852080547fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff0016650100000000004267ffffffffffffffff1602179091177fffffffffffffffffffffffffffffff00000000ffffffffffffffff00000000ff169190930270ffffffff00000000000000000000000000191617600160681b918516919091021790558390612d7a87611478565b604080518781526001602082015260008183015290519192506001600160a01b0388811692908416918a917f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee9181900360600190a4856001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b158015612e0857600080fd5b505afa158015612e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e409190613e72565b15612e5b576000878152600e60205260409020805460010190555b6040517f688a37410000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018990526044820187905287169063688a374190606401600060405180830381600087803b158015612ec557600080fd5b505af1158015612ed9573d6000803e3d6000fd5b5050505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000612f4182611478565b9050612f4f8160008461331e565b612f5a6000836120d8565b6001600160a01b0381166000908152600460205260408120805460019290612f83908490613db3565b909155505060008281526003602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b816001600160a01b0316836001600160a01b0316141561303f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610d8c565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101611c00565b6130af848484612661565b6130bb848484846134b2565b611b555760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610d8c565b80613164576040517f63199bde00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606481111561191c576040517f9cb75faf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060601580546109ed90613d62565b6060816131ee57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115613218578061320281613df6565b91506132119050600a83613e46565b91506131f2565b60008167ffffffffffffffff81111561323357613233613aa3565b6040519080825280601f01601f19166020018201604052801561325d576020820181803683370190505b5090505b841561265957613272600183613db3565b915061327f600a86613f6a565b61328a906030613e5a565b60f81b81838151811061329f5761329f613dca565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506132d9600a86613e46565b9450613261565b60006001600160e01b031982167f2a55205a000000000000000000000000000000000000000000000000000000001480610929575061092982613615565b6000818152600e602052604090205415610e2d576040517f95e7c04000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166133ba5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d8c565b6000818152600360205260409020546001600160a01b03161561341f5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d8c565b61342b6000838361331e565b6001600160a01b0382166000908152600460205260408120805460019290613454908490613e5a565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561360a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906134f6903390899088908890600401613f7e565b602060405180830381600087803b15801561351057600080fd5b505af1925050508015613540575060408051601f3d908101601f1916820190925261353d91810190613fb0565b60015b6135f0573d80801561356e576040519150601f19603f3d011682016040523d82523d6000602084013e613573565b606091505b5080516135e85760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610d8c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612659565b506001949350505050565b60006001600160e01b031982167ff9f7ab4100000000000000000000000000000000000000000000000000000000148061367857506001600160e01b031982167fb39fa00000000000000000000000000000000000000000000000000000000000145b8061092957506109298260006001600160e01b031982167fd147c97a00000000000000000000000000000000000000000000000000000000148061092957506109298260006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061371e57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061092957506301ffc9a760e01b6001600160e01b0319831614610929565b82805461374990613d62565b90600052602060002090601f01602090048101928261376b57600085556137b1565b82601f1061378457805160ff19168380011785556137b1565b828001600101855582156137b1579182015b828111156137b1578251825591602001919060010190613796565b506137bd9291506137e2565b5090565b50805460008255600701600890049060005260206000209081019061191c91905b5b808211156137bd57600081556001016137e3565b6001600160e01b03198116811461191c57600080fd5b60006020828403121561381f57600080fd5b8135611cb6816137f7565b80356001600160a01b038116811461384157600080fd5b919050565b6000806040838503121561385957600080fd5b6138628361382a565b915060208301356bffffffffffffffffffffffff8116811461388357600080fd5b809150509250929050565b60005b838110156138a9578181015183820152602001613891565b83811115611b555750506000910152565b600081518084526138d281602086016020860161388e565b601f01601f19169290920160200192915050565b602081526000611cb660208301846138ba565b60006020828403121561390b57600080fd5b611cb68261382a565b60006020828403121561392657600080fd5b5035919050565b6000806040838503121561394057600080fd5b6139498361382a565b946020939093013593505050565b6000806040838503121561396a57600080fd5b8235915061397a6020840161382a565b90509250929050565b602080825282518282018190526000919060409081850190868401855b828110156139ef5781518051151585528681015163ffffffff908116888701528682015167ffffffffffffffff16878701526060918201511690850152608090930192908501906001016139a0565b5091979650505050505050565b600080600060608486031215613a1157600080fd5b83359250613a216020850161382a565b9150604084013563ffffffff81168114613a3a57600080fd5b809150509250925092565b60008060408385031215613a5857600080fd5b50508035926020909101359150565b600080600060608486031215613a7c57600080fd5b613a858461382a565b9250613a936020850161382a565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115613ad457613ad4613aa3565b604051601f8501601f19908116603f01168101908282118183101715613afc57613afc613aa3565b81604052809350858152868686011115613b1557600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112613b4057600080fd5b611cb683833560208501613ab9565b60008060408385031215613b6257600080fd5b823567ffffffffffffffff80821115613b7a57600080fd5b613b8686838701613b2f565b93506020850135915080821115613b9c57600080fd5b50613ba985828601613b2f565b9150509250929050565b60008060208385031215613bc657600080fd5b823567ffffffffffffffff80821115613bde57600080fd5b818501915085601f830112613bf257600080fd5b813581811115613c0157600080fd5b8660208260051b8501011115613c1657600080fd5b60209290920196919550909350505050565b600080600060608486031215613c3d57600080fd5b83359250613a936020850161382a565b600060208284031215613c5f57600080fd5b813567ffffffffffffffff811115613c7657600080fd5b61265984828501613b2f565b60008060408385031215613c9557600080fd5b613c9e8361382a565b915061397a6020840161382a565b801515811461191c57600080fd5b60008060408385031215613ccd57600080fd5b613cd68361382a565b9150602083013561388381613cac565b60008060008060808587031215613cfc57600080fd5b613d058561382a565b9350613d136020860161382a565b925060408501359150606085013567ffffffffffffffff811115613d3657600080fd5b8501601f81018713613d4757600080fd5b613d5687823560208401613ab9565b91505092959194509250565b600181811c90821680613d7657607f821691505b60208210811415613d9757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015613dc557613dc5613d9d565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000600019821415613e0a57613e0a613d9d565b5060010190565b6000816000190483118215151615613e2b57613e2b613d9d565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613e5557613e55613e30565b500490565b60008219821115613e6d57613e6d613d9d565b500190565b600060208284031215613e8457600080fd5b8151611cb681613cac565b600084516020613ea28285838a0161388e565b855191840191613eb58184848a0161388e565b8554920191600090600181811c9080831680613ed257607f831692505b858310811415613ef057634e487b7160e01b85526022600452602485fd5b808015613f045760018114613f1557613f42565b60ff19851688528388019550613f42565b60008b81526020902060005b85811015613f3a5781548a820152908401908801613f21565b505083880195505b50939b9a5050505050505050505050565b600081613f6257613f62613d9d565b506000190190565b600082613f7957613f79613e30565b500690565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261187b60808301846138ba565b600060208284031215613fc257600080fd5b8151611cb6816137f756fea26469706673582212201e162499a5dfb0866fb884525606e2dda8a0f5117c1e65471de0ed3b92b435f764736f6c6343000809003368747470733a2f2f6469676964616967616b752e636f6d2f6461726b2d737069726974732f6d657461646174612f0000000000000000000000000000000000000000000000000000000000000fcc0000000000000000000000002fa4343e7d1ee4a579d912aa0014a69cf0d1775300000000000000000000000000000000000000000000000000000000000003e8