60806040523480156200001157600080fd5b5060405162007a6c38038062007a6c833981810160405281019062000037919062001507565b826200004981620001c460201b60201c565b62000059620001d960201b60201c565b600381905550506200008062000074620001e260201b60201c565b620001ea60201b60201c565b620000a18560405180602001604052806000815250620002b060201b60201c565b15620000e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000db906200164d565b60405180910390fd5b620001058460405180602001604052806000815250620002b060201b60201c565b1562000148576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013f90620016bf565b60405180910390fd5b846005908162000159919062001922565b5083600690816200016b919062001922565b506200017d826200030d60201b60201c565b6200019d62000191620001e260201b60201c565b6200048e60201b60201c565b6000811115620001b957620001b8816200068d60201b60201c565b5b505050505062002587565b8060029081620001d5919062001922565b5050565b60006001905090565b600033905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081604051602001620002c5919062001a4b565b6040516020818303038152906040528051906020012083604051602001620002ee919062001a4b565b6040516020818303038152906040528051906020012014905092915050565b6200031d6200071a60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200038f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003869062001ab4565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000408826200048e60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146200044f576200044e81620007ab60201b60201c565b5b7ff6bc2bcc8e0a65a5318e2d3f9bc2a09c3897644055a503c196585dda8a23a96b82426040516200048292919062001af8565b60405180910390a15050565b6200049e620001e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620004c4620009aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161480620005435750620004f2620001e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b62000585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200057c9062001b9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620005f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005ee9062001c0d565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f65775ec64fc77b88ff9e1701e806028c844b256dccc9633b6f4b3099ed4b378081426040516200068292919062001c7f565b60405180910390a150565b6200069d6200071a60201b60201c565b60008103620006e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006da9062001d37565b60405180910390fd5b62000717600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682620009d460201b60201c565b50565b6200072a620001e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000750620009aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007a09062001da9565b60405180910390fd5b565b620007bb620001e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007e1620009aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614806200086057506200080f620001e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b620008a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008999062001b9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000914576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200090b9062001c0d565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f65775ec64fc77b88ff9e1701e806028c844b256dccc9633b6f4b3099ed4b378081426040516200099f92919062001e1b565b60405180910390a150565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620009f6828260405180602001604052806000815250620009fa60201b60201c565b5050565b60008062000a0f858562000a5760201b60201c565b915091506000600354905062000a4062000a2e620001e260201b60201c565b60008886868962000d7e60201b60201c565b806003541462000a4f57600080fd5b505050505050565b606080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160362000ac1576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000830362000afc576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062000b0e620001e260201b60201c565b90508367ffffffffffffffff81111562000b2d5762000b2c62001303565b5b60405190808252806020026020018201604052801562000b5c5781602001602082028036833780820191505090505b5092508367ffffffffffffffff81111562000b7c5762000b7b62001303565b5b60405190808252806020026020018201604052801562000bab5781602001602082028036833780820191505090505b509150600062000bc062000f6160201b60201c565b905080857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03101562000bf257600080fd5b60005b8581101562000c555780820185828151811062000c175762000c1662001e5d565b5b602002602001018181525050600184828151811062000c3b5762000c3a62001e5d565b5b602002602001018181525050808060010191505062000bf5565b5062000c6b826000888762000f6b60201b60201c565b62000cc481866000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206200116f60201b62001df3179092919060201c565b846003600082825462000cd8919062001ebb565b925050819055508573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405162000d5892919062001fc4565b60405180910390a462000d758260008887620011f960201b60201c565b50509250929050565b62000daa8473ffffffffffffffffffffffffffffffffffffffff16620011ff60201b62001e7a1760201c565b1562000f59578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040162000df39594939291906200205c565b6020604051808303816000875af192505050801562000e3257506040513d601f19601f8201168201806040525081019062000e2f91906200212b565b60015b62000ed85762000e416200216a565b806308c379a00362000ea4575062000e586200218f565b8062000e65575062000ea6565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e9b91906200226b565b60405180910390fd5b505b6040517f9c05499b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161462000f57576040517f9c05499b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b505050505050565b6000600354905090565b62000f84848484846200122260201b62001e9d1760201c565b62000f94620009aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146200116957600760149054906101000a900460ff16156200101a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010119062002305565b60405180910390fd5b6200102b826200122860201b60201c565b6200106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001064906200239d565b60405180910390fd5b6200107e826200127e60201b60201c565b15620010c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010b89062002435565b60405180910390fd5b620010d2836200122860201b60201c565b62001114576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200110b90620024cd565b60405180910390fd5b62001125836200127e60201b60201c565b1562001168576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200115f9062002565565b60405180910390fd5b5b50505050565b60001960ff8316846020528360081c60005261010183820110620011de57604060002082821b815417815560016000510182850160081c6000510160ff848701169550600093505b808214620011d6578160005284604060002055600182019150620011b7565b816000525050505b60406000208284610100031c821b8154178155505050505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200133d82620012f2565b810181811067ffffffffffffffff821117156200135f576200135e62001303565b5b80604052505050565b600062001374620012d4565b905062001382828262001332565b919050565b600067ffffffffffffffff821115620013a557620013a462001303565b5b620013b082620012f2565b9050602081019050919050565b60005b83811015620013dd578082015181840152602081019050620013c0565b60008484015250505050565b600062001400620013fa8462001387565b62001368565b9050828152602081018484840111156200141f576200141e620012ed565b5b6200142c848285620013bd565b509392505050565b600082601f8301126200144c576200144b620012e8565b5b81516200145e848260208601620013e9565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620014948262001467565b9050919050565b620014a68162001487565b8114620014b257600080fd5b50565b600081519050620014c6816200149b565b92915050565b6000819050919050565b620014e181620014cc565b8114620014ed57600080fd5b50565b6000815190506200150181620014d6565b92915050565b600080600080600060a08688031215620015265762001525620012de565b5b600086015167ffffffffffffffff811115620015475762001546620012e3565b5b620015558882890162001434565b955050602086015167ffffffffffffffff811115620015795762001578620012e3565b5b620015878882890162001434565b945050604086015167ffffffffffffffff811115620015ab57620015aa620012e3565b5b620015b98882890162001434565b9350506060620015cc88828901620014b5565b9250506080620015df88828901620014f0565b9150509295509295909350565b600082825260208201905092915050565b7f546f6b656e206e616d6520697320726571756972656400000000000000000000600082015250565b600062001635601683620015ec565b91506200164282620015fd565b602082019050919050565b60006020820190508181036000830152620016688162001626565b9050919050565b7f546f6b656e2073796d626f6c2069732072657175697265640000000000000000600082015250565b6000620016a7601883620015ec565b9150620016b4826200166f565b602082019050919050565b60006020820190508181036000830152620016da8162001698565b9050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200173457607f821691505b6020821081036200174a5762001749620016ec565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620017b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001775565b620017c0868362001775565b95508019841693508086168417925050509392505050565b6000819050919050565b600062001803620017fd620017f784620014cc565b620017d8565b620014cc565b9050919050565b6000819050919050565b6200181f83620017e2565b620018376200182e826200180a565b84845462001782565b825550505050565b600090565b6200184e6200183f565b6200185b81848462001814565b505050565b5b8181101562001883576200187760008262001844565b60018101905062001861565b5050565b601f821115620018d2576200189c8162001750565b620018a78462001765565b81016020851015620018b7578190505b620018cf620018c68562001765565b83018262001860565b50505b505050565b600082821c905092915050565b6000620018f760001984600802620018d7565b1980831691505092915050565b6000620019128383620018e4565b9150826002028217905092915050565b6200192d82620016e1565b67ffffffffffffffff81111562001949576200194862001303565b5b6200195582546200171b565b6200196282828562001887565b600060209050601f8311600181146200199a576000841562001985578287015190505b62001991858262001904565b86555062001a01565b601f198416620019aa8662001750565b60005b82811015620019d457848901518255600182019150602085019450602081019050620019ad565b86831015620019f45784890151620019f0601f891682620018e4565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b600062001a2182620016e1565b62001a2d818562001a09565b935062001a3f818560208601620013bd565b80840191505092915050565b600062001a59828462001a14565b915081905092915050565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b600062001a9c600f83620015ec565b915062001aa98262001a64565b602082019050919050565b6000602082019050818103600083015262001acf8162001a8d565b9050919050565b62001ae18162001487565b82525050565b62001af281620014cc565b82525050565b600060408201905062001b0f600083018562001ad6565b62001b1e602083018462001ae7565b9392505050565b7f417574686f72697a65643a2063616c6c6572206973206e6f742074686520617560008201527f74686f72697a6564207061727479000000000000000000000000000000000000602082015250565b600062001b83602e83620015ec565b915062001b908262001b25565b604082019050919050565b6000602082019050818103600083015262001bb68162001b74565b9050919050565b7f496e76616c6964206163636f756e7420616464726573732070726f7669646564600082015250565b600062001bf5602083620015ec565b915062001c028262001bbd565b602082019050919050565b6000602082019050818103600083015262001c288162001be6565b9050919050565b7f57484954454c4953544544000000000000000000000000000000000000000000600082015250565b600062001c67600b83620015ec565b915062001c748262001c2f565b602082019050919050565b6000606082019050818103600083015262001c9a8162001c58565b905062001cab602083018562001ad6565b62001cba604083018462001ae7565b9392505050565b7f4d696e74207175616e746974792073686f756c6420626520677265617465722060008201527f7468616e20300000000000000000000000000000000000000000000000000000602082015250565b600062001d1f602683620015ec565b915062001d2c8262001cc1565b604082019050919050565b6000602082019050818103600083015262001d528162001d10565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001d91602083620015ec565b915062001d9e8262001d59565b602082019050919050565b6000602082019050818103600083015262001dc48162001d82565b9050919050565b7f554e57484954454c495354454400000000000000000000000000000000000000600082015250565b600062001e03600d83620015ec565b915062001e108262001dcb565b602082019050919050565b6000606082019050818103600083015262001e368162001df4565b905062001e47602083018562001ad6565b62001e56604083018462001ae7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062001ec882620014cc565b915062001ed583620014cc565b925082820190508082111562001ef05762001eef62001e8c565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b62001f2d81620014cc565b82525050565b600062001f41838362001f22565b60208301905092915050565b6000602082019050919050565b600062001f678262001ef6565b62001f73818562001f01565b935062001f808362001f12565b8060005b8381101562001fb757815162001f9b888262001f33565b975062001fa88362001f4d565b92505060018101905062001f84565b5085935050505092915050565b6000604082019050818103600083015262001fe0818562001f5a565b9050818103602083015262001ff6818462001f5a565b90509392505050565b600081519050919050565b600082825260208201905092915050565b6000620020288262001fff565b6200203481856200200a565b935062002046818560208601620013bd565b6200205181620012f2565b840191505092915050565b600060a08201905062002073600083018862001ad6565b62002082602083018762001ad6565b818103604083015262002096818662001f5a565b90508181036060830152620020ac818562001f5a565b90508181036080830152620020c281846200201b565b90509695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6200210581620020ce565b81146200211157600080fd5b50565b6000815190506200212581620020fa565b92915050565b600060208284031215620021445762002143620012de565b5b6000620021548482850162002114565b91505092915050565b60008160e01c9050919050565b600060033d11156200218c5760046000803e620021896000516200215d565b90505b90565b600060443d106200222757620021a4620012d4565b60043d036004823e80513d602482011167ffffffffffffffff82111715620021ce57505062002227565b808201805167ffffffffffffffff811115620021ee575050505062002227565b80602083010160043d0385018111156200220d57505050505062002227565b6200221e8260200185018662001332565b82955050505050505b90565b60006200223782620016e1565b620022438185620015ec565b935062002255818560208601620013bd565b6200226081620012f2565b840191505092915050565b600060208201905081810360008301526200228781846200222a565b905092915050565b7f5472616e73666572206f662074686520746f6b656e732061726520667265657a60008201527f65642074656d706f726172696c792e0000000000000000000000000000000000602082015250565b6000620022ed602f83620015ec565b9150620022fa826200228f565b604082019050919050565b600060208201905081810360008301526200232081620022de565b9050919050565b7f546f6b656e207472616e7366657220726573747269637465643a20526563656960008201527f766572206d7573742062652077686974656c6973746564000000000000000000602082015250565b600062002385603783620015ec565b9150620023928262002327565b604082019050919050565b60006020820190508181036000830152620023b88162002376565b9050919050565b7f546f6b656e207472616e7366657220726573747269637465643a20526563656960008201527f76657220697320626c61636b6c69737465640000000000000000000000000000602082015250565b60006200241d603283620015ec565b91506200242a82620023bf565b604082019050919050565b6000602082019050818103600083015262002450816200240e565b9050919050565b7f546f6b656e207472616e7366657220726573747269637465643a2053656e646560008201527f72206d7573742062652077686974656c69737465640000000000000000000000602082015250565b6000620024b5603583620015ec565b9150620024c28262002457565b604082019050919050565b60006020820190508181036000830152620024e881620024a6565b9050919050565b7f546f6b656e207472616e7366657220726573747269637465643a2053656e646560008201527f7220697320626c61636b6c697374656400000000000000000000000000000000602082015250565b60006200254d603083620015ec565b91506200255a82620024ef565b604082019050919050565b6000602082019050818103600083015262002580816200253e565b9050919050565b6154d580620025976000396000f3fe608060405234801561001057600080fd5b506004361061021b5760003560e01c80638ab1d68111610125578063b2dc5dc3116100ad578063e43252d71161007c578063e43252d714610622578063e985e9c51461063e578063f242432a1461066e578063f2fde38b1461068a578063fe575a87146106a65761021b565b8063b2dc5dc31461059c578063b9469e1a146105b8578063c5b8f772146105d6578063e11c9c1e146106065761021b565b806399a2557a116100f457806399a2557a146104fc5780639dc29fac1461052c578063a0712d6814610548578063a22cb46514610564578063a2ea73c6146105805761021b565b80638ab1d681146104865780638da5cb5b146104a257806394217ad1146104c057806395d89b41146104de5761021b565b80633768b77e116101a8578063537df3b611610177578063537df3b6146103f657806370a0823114610412578063715018a6146104425780638462151c1461044c578063875606a11461047c5761021b565b80633768b77e1461035e5780633af32abf1461037a57806344337ea1146103aa5780634e1273f4146103c65761021b565b806306fdde03116101ef57806306fdde03146102a65780630e89341c146102c457806318160ddd146102f45780632d760d57146103125780632eb2c2d6146103425761021b565b8062fdd58e1461022057806301ffc9a71461025057806302fe5305146102805780630418ac091461029c575b600080fd5b61023a600480360381019061023591906137cb565b6106d6565b604051610247919061381a565b60405180910390f35b61026a6004803603810190610265919061388d565b6107a6565b60405161027791906138d5565b60405180910390f35b61029a60048036038101906102959190613a36565b6108f0565b005b6102a461095d565b005b6102ae6109b9565b6040516102bb9190613afe565b60405180910390f35b6102de60048036038101906102d99190613b20565b610a47565b6040516102eb9190613afe565b60405180910390f35b6102fc610adb565b604051610309919061381a565b60405180910390f35b61032c60048036038101906103279190613b4d565b610afe565b604051610339919061381a565b60405180910390f35b61035c60048036038101906103579190613d09565b610b66565b005b61037860048036038101906103739190613dd8565b610bfe565b005b610394600480360381019061038f9190613e6f565b610cc8565b6040516103a191906138d5565b60405180910390f35b6103c460048036038101906103bf9190613e6f565b610d1e565b005b6103e060048036038101906103db9190613f5f565b610e29565b6040516103ed9190614095565b60405180910390f35b610410600480360381019061040b9190613e6f565b610f39565b005b61042c60048036038101906104279190613e6f565b611044565b604051610439919061381a565b60405180910390f35b61044a611066565b005b61046660048036038101906104619190613e6f565b61107a565b6040516104739190614095565b60405180910390f35b6104846110fd565b005b6104a0600480360381019061049b9190613e6f565b611159565b005b6104aa611337565b6040516104b791906140c6565b60405180910390f35b6104c8611361565b6040516104d591906140c6565b60405180910390f35b6104e6611387565b6040516104f39190613afe565b60405180910390f35b61051660048036038101906105119190613b4d565b611415565b6040516105239190614095565b60405180910390f35b610546600480360381019061054191906137cb565b61159e565b005b610562600480360381019061055d9190613b20565b61163f565b005b61057e6004803603810190610579919061410d565b6116b9565b005b61059a60048036038101906105959190613e6f565b6116cf565b005b6105b660048036038101906105b1919061414d565b611832565b005b6105c06118d3565b6040516105cd91906138d5565b60405180910390f35b6105f060048036038101906105eb91906137cb565b6118e6565b6040516105fd91906138d5565b60405180910390f35b610620600480360381019061061b9190613d09565b611940565b005b61063c60048036038101906106379190613e6f565b611a0a565b005b610658600480360381019061065391906141a9565b611be8565b60405161066591906138d5565b60405180910390f35b61068860048036038101906106839190613dd8565b611c7c565b005b6106a4600480360381019061069f9190613e6f565b611d1a565b005b6106c060048036038101906106bb9190613e6f565b611d9d565b6040516106cd91906138d5565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361073d576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61078d826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611ea390919063ffffffff16565b1561079b57600190506107a0565b600090505b92915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061087157507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108d957507fc5b8f772000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108e957506108e882611ed5565b5b9050919050565b6108f8611f3f565b6109118160405180602001604052806000815250611fbd565b15610951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094890614235565b60405180910390fd5b61095a81612016565b50565b610965611f3f565b6000600760146101000a81548160ff0219169083151502179055507f99cd98b920d62d49e0d4d2577087e9935e89c002b89adf30eac9bb741acdbf3f426040516109af91906142a1565b60405180910390a1565b600580546109c6906142fe565b80601f01602080910402602001604051908101604052809291908181526020018280546109f2906142fe565b8015610a3f5780601f10610a1457610100808354040283529160200191610a3f565b820191906000526020600020905b815481529060010190602001808311610a2257829003601f168201915b505050505081565b606060028054610a56906142fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610a82906142fe565b8015610acf5780601f10610aa457610100808354040283529160200191610acf565b820191906000526020600020905b815481529060010190602001808311610ab257829003601f168201915b50505050509050919050565b6000610af9600854610aeb612029565b61204a90919063ffffffff16565b905090565b6000610b5d838484610b10919061435e565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206120609092919063ffffffff16565b90509392505050565b610b6e61212b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610bb45750610bb385610bae61212b565b611be8565b5b610bea576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bf78585858585612133565b5050505050565b610c06611f3f565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c906143de565b60405180910390fd5b610c828585858585612422565b7f621e134d15cd6a12f54dea0dfe285e7635babbcb29155f2698e42457277034138585858542604051610cb99594939291906143fe565b60405180910390a15050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610d26611f3f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c9061449d565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fe2cf58681b4980b72b776bd74be9826ca70479f1e7be7f971e85724d6f72f4998142604051610e1e929190614509565b60405180910390a150565b60608151835114610e66576040517f7801f4e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000835167ffffffffffffffff811115610e8357610e8261390b565b5b604051908082528060200260200182016040528015610eb15781602001602082028036833780820191505090505b50905060005b8451811015610f2e57610efe858281518110610ed657610ed5614545565b5b6020026020010151858381518110610ef157610ef0614545565b5b60200260200101516106d6565b828281518110610f1157610f10614545565b5b60200260200101818152505080610f2790614574565b9050610eb7565b508091505092915050565b610f41611f3f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa79061449d565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fe2cf58681b4980b72b776bd74be9826ca70479f1e7be7f971e85724d6f72f4998142604051611039929190614608565b60405180910390a150565b600061105f82611052612686565b61105a61268f565b610afe565b9050919050565b61106e611f3f565b6110786000612699565b565b60606000611086612029565b036110dc57600067ffffffffffffffff8111156110a6576110a561390b565b5b6040519080825280602002602001820160405280156110d45781602001602082028036833780820191505090505b5090506110f8565b6110f5826110e8612686565b6110f061268f565b611415565b90505b919050565b611105611f3f565b6001600760146101000a81548160ff0219169083151502179055507f99cd98b920d62d49e0d4d2577087e9935e89c002b89adf30eac9bb741acdbf3f4260405161114f9190614690565b60405180910390a1565b61116161212b565b73ffffffffffffffffffffffffffffffffffffffff1661117f611337565b73ffffffffffffffffffffffffffffffffffffffff1614806111f557506111a461212b565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b90614730565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129a9061449d565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f65775ec64fc77b88ff9e1701e806028c844b256dccc9633b6f4b3099ed4b3780814260405161132c92919061479c565b60405180910390a150565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60068054611394906142fe565b80601f01602080910402602001604051908101604052809291908181526020018280546113c0906142fe565b801561140d5780601f106113e25761010080835404028352916020019161140d565b820191906000526020600020905b8154815290600101906020018083116113f057829003601f168201915b505050505081565b6060818310611450576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611458612686565b83101561146a57611467612686565b92505b600061147461268f565b905080831115611482578092505b60008385101561149e57611497868686610afe565b90506114a3565b600090505b60008167ffffffffffffffff8111156114bf576114be61390b565b5b6040519080825280602002602001820160405280156114ed5781602001602082028036833780820191505090505b50905060008060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080886000915091505b84811461158e576115578284611ea390919063ffffffff16565b15611583578184828060010193508151811061157657611575614545565b5b6020026020010181815250505b81600101915061153d565b5050819450505050509392505050565b6115a6611f3f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90614824565b60405180910390fd5b61161f828261275f565b611635600160085461295490919063ffffffff16565b6008819055505050565b611647611f3f565b6000810361168a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611681906148b6565b60405180910390fd5b6116b6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261296a565b50565b6116cb6116c461212b565b8383612988565b5050565b6116d7611f3f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90614922565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506117b782611a0a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146117f5576117f481611159565b5b7ff6bc2bcc8e0a65a5318e2d3f9bc2a09c3897644055a503c196585dda8a23a96b8242604051611826929190614942565b60405180910390a15050565b61183a611f3f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a090614824565b60405180910390fd5b6118b38282612af4565b6118c9815160085461295490919063ffffffff16565b6008819055505050565b600760149054906101000a900460ff1681565b6000611938826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611ea390919063ffffffff16565b905092915050565b611948611f3f565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae906143de565b60405180910390fd5b6119c48585858585612133565b7f6a1999d25be6b4fbad0f2cfd0c9d5c2b3b20250abc4cee55e54c974247407eb585858585426040516119fb95949392919061496b565b60405180910390a15050505050565b611a1261212b565b73ffffffffffffffffffffffffffffffffffffffff16611a30611337565b73ffffffffffffffffffffffffffffffffffffffff161480611aa65750611a5561212b565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adc90614730565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b9061449d565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f65775ec64fc77b88ff9e1701e806028c844b256dccc9633b6f4b3099ed4b37808142604051611bdd929190614a18565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611c8461212b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611cca5750611cc985611cc461212b565b611be8565b5b15611ce157611cdc8585858585612422565b611d13565b6040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b611d22611f3f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890614ac6565b60405180910390fd5b611d9a81612699565b50565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60001960ff8316846020528360081c60005261010183820110611e5f57604060002082821b815417815560016000510182850160081c6000510160ff848701169550600093505b808214611e57578160005284604060002055600182019150611e3a565b816000525050505b60406000208284610100031c821b8154178155505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b600080600160ff8416856000016000600887901c815260200190815260200160002054901c1690508091505092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611f4761212b565b73ffffffffffffffffffffffffffffffffffffffff16611f65611337565b73ffffffffffffffffffffffffffffffffffffffff1614611fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb290614b32565b60405180910390fd5b565b600081604051602001611fd09190614b8e565b6040516020818303038152906040528051906020012083604051602001611ff79190614b8e565b6040516020818303038152906040528051906020012014905092915050565b80600290816120259190614d51565b5050565b6000612033612686565b61203b61268f565b612045919061435e565b905090565b60008183612058919061435e565b905092915050565b600080600884901c9050600060ff85169050610101818501106120f65761209e8187600001600085815260200190815260200160002054901c612d84565b925060006008828601901c8301905060ff828601169450600091508260010192505b8083146120f4576120e587600001600085815260200190815260200160002054612d84565b840193508260010192506120c0565b505b61211e84610100038288600001600086815260200190815260200160002054901c901b612d84565b8301925050509392505050565b600033905090565b815183511461216e576040517f7801f4e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036121d4576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121de61212b565b90506121ec81878787612dce565b60005b845181101561238157600085828151811061220d5761220c614545565b5b60200260200101519050600085838151811061222c5761222b614545565b5b602002602001015190506001811480156122925750612291826000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611ea390919063ffffffff16565b5b1561233c576122e7826000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612f8d90919063ffffffff16565b612337826000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612fc090919063ffffffff16565b61236e565b6040517f37dbad3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50508061237a90614574565b90506121ef565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516123f8929190614e23565b60405180910390a461240c81878787612ff2565b61241a818787878787612ff8565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612488576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061249261212b565b9050600061249f856131bd565b90506124ad82888884612dce565b6001841480156125095750612508856000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611ea390919063ffffffff16565b5b156125b35761255e856000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612f8d90919063ffffffff16565b6125ae856000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612fc090919063ffffffff16565b6125e5565b6040517f37dbad3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161265b929190614e5a565b60405180910390a461266f82888884612ff2565b61267d828888888888613231565b50505050505050565b60006001905090565b6000600354905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127c5576040517fb817eee700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127cf61212b565b905060006127dc836131bd565b90506127eb8285600084612dce565b61283b836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611ea390919063ffffffff16565b612871576040517f375040fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128c1836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612f8d90919063ffffffff16565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62866001604051612939929190614ebe565b60405180910390a461294e8285600084612ff2565b50505050565b600081836129629190614ee7565b905092915050565b6129848282604051806020016040528060008152506133f6565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ed90614f8d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612ae791906138d5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b5a576040517fb817eee700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612b6461212b565b90506000825167ffffffffffffffff811115612b8357612b8261390b565b5b604051908082528060200260200182016040528015612bb15781602001602082028036833780820191505090505b509050612bc18285600086612dce565b60005b8351811015612cf1576001828281518110612be257612be1614545565b5b6020026020010181815250506000848281518110612c0357612c02614545565b5b60200260200101519050612c5d816000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611ea390919063ffffffff16565b612c93576040517f375040fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ce3816000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612f8d90919063ffffffff16565b508080600101915050612bc4565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8685604051612d69929190614e23565b60405180910390a4612d7e8285600086612ff2565b50505050565b60008019808314600382048460011c1684039350600582048460021c16600583048516019350601182048460041c850116935060ff8204840260f81c8160081b1792505050919050565b612dda84848484611e9d565b612de2611337565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612f8757600760149054906101000a900460ff1615612e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5b9061501f565b60405180910390fd5b612e6d82610cc8565b612eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea3906150b1565b60405180910390fd5b612eb582611d9d565b15612ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eec90615143565b60405180910390fd5b612efe83610cc8565b612f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f34906151d5565b60405180910390fd5b612f4683611d9d565b15612f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7d90615267565b60405180910390fd5b5b50505050565b60ff81166001901b19826000016000600884901c8152602001908152602001600020600082825416925050819055505050565b60ff81166001901b826000016000600884901c8152602001908152602001600020600082825417925050819055505050565b50505050565b6130178473ffffffffffffffffffffffffffffffffffffffff16611e7a565b156131b5578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161305d9594939291906152dc565b6020604051808303816000875af192505050801561309957506040513d601f19601f820116820180604052508101906130969190615359565b60015b613135576130a5615393565b806308c379a00361310157506130b96153b5565b806130c45750613103565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f89190613afe565b60405180910390fd5b505b6040517f9c05499b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146131b3576040517f9c05499b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b505050505050565b6060600167ffffffffffffffff8111156131da576131d961390b565b5b6040519080825280602002602001820160405280156132085781602001602082028036833780820191505090505b50905081816000815181106132205761321f614545565b5b602002602001018181525050919050565b6132508473ffffffffffffffffffffffffffffffffffffffff16611e7a565b156133ee578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401613296959493929190615445565b6020604051808303816000875af19250505080156132d257506040513d601f19601f820116820180604052508101906132cf9190615359565b60015b61336e576132de615393565b806308c379a00361333a57506132f26153b5565b806132fd575061333c565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133319190613afe565b60405180910390fd5b505b6040517f9c05499b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146133ec576040517f9c05499b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b505050505050565b600080613403858561343a565b915091506000600354905061342461341961212b565b600088868689612ff8565b806003541461343257600080fd5b505050505050565b606080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036134a3576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083036134dd576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006134e761212b565b90508367ffffffffffffffff8111156135035761350261390b565b5b6040519080825280602002602001820160405280156135315781602001602082028036833780820191505090505b5092508367ffffffffffffffff81111561354e5761354d61390b565b5b60405190808252806020026020018201604052801561357c5781602001602082028036833780820191505090505b509150600061358961268f565b905080857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0310156135ba57600080fd5b60005b85811015613615578082018582815181106135db576135da614545565b5b60200260200101818152505060018482815181106135fc576135fb614545565b5b60200260200101818152505080806001019150506135bd565b506136238260008887612dce565b61367581866000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611df39092919063ffffffff16565b84600360008282546136879190614ee7565b925050819055508573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051613705929190614e23565b60405180910390a461371a8260008887612ff2565b50509250929050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061376282613737565b9050919050565b61377281613757565b811461377d57600080fd5b50565b60008135905061378f81613769565b92915050565b6000819050919050565b6137a881613795565b81146137b357600080fd5b50565b6000813590506137c58161379f565b92915050565b600080604083850312156137e2576137e161372d565b5b60006137f085828601613780565b9250506020613801858286016137b6565b9150509250929050565b61381481613795565b82525050565b600060208201905061382f600083018461380b565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61386a81613835565b811461387557600080fd5b50565b60008135905061388781613861565b92915050565b6000602082840312156138a3576138a261372d565b5b60006138b184828501613878565b91505092915050565b60008115159050919050565b6138cf816138ba565b82525050565b60006020820190506138ea60008301846138c6565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613943826138fa565b810181811067ffffffffffffffff821117156139625761396161390b565b5b80604052505050565b6000613975613723565b9050613981828261393a565b919050565b600067ffffffffffffffff8211156139a1576139a061390b565b5b6139aa826138fa565b9050602081019050919050565b82818337600083830152505050565b60006139d96139d484613986565b61396b565b9050828152602081018484840111156139f5576139f46138f5565b5b613a008482856139b7565b509392505050565b600082601f830112613a1d57613a1c6138f0565b5b8135613a2d8482602086016139c6565b91505092915050565b600060208284031215613a4c57613a4b61372d565b5b600082013567ffffffffffffffff811115613a6a57613a69613732565b5b613a7684828501613a08565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ab9578082015181840152602081019050613a9e565b60008484015250505050565b6000613ad082613a7f565b613ada8185613a8a565b9350613aea818560208601613a9b565b613af3816138fa565b840191505092915050565b60006020820190508181036000830152613b188184613ac5565b905092915050565b600060208284031215613b3657613b3561372d565b5b6000613b44848285016137b6565b91505092915050565b600080600060608486031215613b6657613b6561372d565b5b6000613b7486828701613780565b9350506020613b85868287016137b6565b9250506040613b96868287016137b6565b9150509250925092565b600067ffffffffffffffff821115613bbb57613bba61390b565b5b602082029050602081019050919050565b600080fd5b6000613be4613bdf84613ba0565b61396b565b90508083825260208201905060208402830185811115613c0757613c06613bcc565b5b835b81811015613c305780613c1c88826137b6565b845260208401935050602081019050613c09565b5050509392505050565b600082601f830112613c4f57613c4e6138f0565b5b8135613c5f848260208601613bd1565b91505092915050565b600067ffffffffffffffff821115613c8357613c8261390b565b5b613c8c826138fa565b9050602081019050919050565b6000613cac613ca784613c68565b61396b565b905082815260208101848484011115613cc857613cc76138f5565b5b613cd38482856139b7565b509392505050565b600082601f830112613cf057613cef6138f0565b5b8135613d00848260208601613c99565b91505092915050565b600080600080600060a08688031215613d2557613d2461372d565b5b6000613d3388828901613780565b9550506020613d4488828901613780565b945050604086013567ffffffffffffffff811115613d6557613d64613732565b5b613d7188828901613c3a565b935050606086013567ffffffffffffffff811115613d9257613d91613732565b5b613d9e88828901613c3a565b925050608086013567ffffffffffffffff811115613dbf57613dbe613732565b5b613dcb88828901613cdb565b9150509295509295909350565b600080600080600060a08688031215613df457613df361372d565b5b6000613e0288828901613780565b9550506020613e1388828901613780565b9450506040613e24888289016137b6565b9350506060613e35888289016137b6565b925050608086013567ffffffffffffffff811115613e5657613e55613732565b5b613e6288828901613cdb565b9150509295509295909350565b600060208284031215613e8557613e8461372d565b5b6000613e9384828501613780565b91505092915050565b600067ffffffffffffffff821115613eb757613eb661390b565b5b602082029050602081019050919050565b6000613edb613ed684613e9c565b61396b565b90508083825260208201905060208402830185811115613efe57613efd613bcc565b5b835b81811015613f275780613f138882613780565b845260208401935050602081019050613f00565b5050509392505050565b600082601f830112613f4657613f456138f0565b5b8135613f56848260208601613ec8565b91505092915050565b60008060408385031215613f7657613f7561372d565b5b600083013567ffffffffffffffff811115613f9457613f93613732565b5b613fa085828601613f31565b925050602083013567ffffffffffffffff811115613fc157613fc0613732565b5b613fcd85828601613c3a565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61400c81613795565b82525050565b600061401e8383614003565b60208301905092915050565b6000602082019050919050565b600061404282613fd7565b61404c8185613fe2565b935061405783613ff3565b8060005b8381101561408857815161406f8882614012565b975061407a8361402a565b92505060018101905061405b565b5085935050505092915050565b600060208201905081810360008301526140af8184614037565b905092915050565b6140c081613757565b82525050565b60006020820190506140db60008301846140b7565b92915050565b6140ea816138ba565b81146140f557600080fd5b50565b600081359050614107816140e1565b92915050565b600080604083850312156141245761412361372d565b5b600061413285828601613780565b9250506020614143858286016140f8565b9150509250929050565b600080604083850312156141645761416361372d565b5b600061417285828601613780565b925050602083013567ffffffffffffffff81111561419357614192613732565b5b61419f85828601613c3a565b9150509250929050565b600080604083850312156141c0576141bf61372d565b5b60006141ce85828601613780565b92505060206141df85828601613780565b9150509250929050565b7f5552492063616e6e6f74206e6f742062652073657420746f20656d7074790000600082015250565b600061421f601e83613a8a565b915061422a826141e9565b602082019050919050565b6000602082019050818103600083015261424e81614212565b9050919050565b7f554e465245455a45440000000000000000000000000000000000000000000000600082015250565b600061428b600983613a8a565b915061429682614255565b602082019050919050565b600060408201905081810360008301526142ba8161427e565b90506142c9602083018461380b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061431657607f821691505b602082108103614329576143286142cf565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061436982613795565b915061437483613795565b925082820390508181111561438c5761438b61432f565b5b92915050565b7f496e76616c69642066726f6d20616464726573732070726f7669646564000000600082015250565b60006143c8601d83613a8a565b91506143d382614392565b602082019050919050565b600060208201905081810360008301526143f7816143bb565b9050919050565b600060a08201905061441360008301886140b7565b61442060208301876140b7565b61442d604083018661380b565b61443a606083018561380b565b614447608083018461380b565b9695505050505050565b7f496e76616c6964206163636f756e7420616464726573732070726f7669646564600082015250565b6000614487602083613a8a565b915061449282614451565b602082019050919050565b600060208201905081810360008301526144b68161447a565b9050919050565b7f424c41434b4c4953544544000000000000000000000000000000000000000000600082015250565b60006144f3600b83613a8a565b91506144fe826144bd565b602082019050919050565b60006060820190508181036000830152614522816144e6565b905061453160208301856140b7565b61453e604083018461380b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061457f82613795565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145b1576145b061432f565b5b600182019050919050565b7f554e424c41434b4c495354454400000000000000000000000000000000000000600082015250565b60006145f2600d83613a8a565b91506145fd826145bc565b602082019050919050565b60006060820190508181036000830152614621816145e5565b905061463060208301856140b7565b61463d604083018461380b565b9392505050565b7f465245455a454400000000000000000000000000000000000000000000000000600082015250565b600061467a600783613a8a565b915061468582614644565b602082019050919050565b600060408201905081810360008301526146a98161466d565b90506146b8602083018461380b565b92915050565b7f417574686f72697a65643a2063616c6c6572206973206e6f742074686520617560008201527f74686f72697a6564207061727479000000000000000000000000000000000000602082015250565b600061471a602e83613a8a565b9150614725826146be565b604082019050919050565b600060208201905081810360008301526147498161470d565b9050919050565b7f554e57484954454c495354454400000000000000000000000000000000000000600082015250565b6000614786600d83613a8a565b915061479182614750565b602082019050919050565b600060608201905081810360008301526147b581614779565b90506147c460208301856140b7565b6147d1604083018461380b565b9392505050565b7f496e76616c6964206163636f756e742061646472657373000000000000000000600082015250565b600061480e601783613a8a565b9150614819826147d8565b602082019050919050565b6000602082019050818103600083015261483d81614801565b9050919050565b7f4d696e74207175616e746974792073686f756c6420626520677265617465722060008201527f7468616e20300000000000000000000000000000000000000000000000000000602082015250565b60006148a0602683613a8a565b91506148ab82614844565b604082019050919050565b600060208201905081810360008301526148cf81614893565b9050919050565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b600061490c600f83613a8a565b9150614917826148d6565b602082019050919050565b6000602082019050818103600083015261493b816148ff565b9050919050565b600060408201905061495760008301856140b7565b614964602083018461380b565b9392505050565b600060a08201905061498060008301886140b7565b61498d60208301876140b7565b818103604083015261499f8186614037565b905081810360608301526149b38185614037565b90506149c2608083018461380b565b9695505050505050565b7f57484954454c4953544544000000000000000000000000000000000000000000600082015250565b6000614a02600b83613a8a565b9150614a0d826149cc565b602082019050919050565b60006060820190508181036000830152614a31816149f5565b9050614a4060208301856140b7565b614a4d604083018461380b565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ab0602683613a8a565b9150614abb82614a54565b604082019050919050565b60006020820190508181036000830152614adf81614aa3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b1c602083613a8a565b9150614b2782614ae6565b602082019050919050565b60006020820190508181036000830152614b4b81614b0f565b9050919050565b600081905092915050565b6000614b6882613a7f565b614b728185614b52565b9350614b82818560208601613a9b565b80840191505092915050565b6000614b9a8284614b5d565b915081905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302614c077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614bca565b614c118683614bca565b95508019841693508086168417925050509392505050565b6000819050919050565b6000614c4e614c49614c4484613795565b614c29565b613795565b9050919050565b6000819050919050565b614c6883614c33565b614c7c614c7482614c55565b848454614bd7565b825550505050565b600090565b614c91614c84565b614c9c818484614c5f565b505050565b5b81811015614cc057614cb5600082614c89565b600181019050614ca2565b5050565b601f821115614d0557614cd681614ba5565b614cdf84614bba565b81016020851015614cee578190505b614d02614cfa85614bba565b830182614ca1565b50505b505050565b600082821c905092915050565b6000614d2860001984600802614d0a565b1980831691505092915050565b6000614d418383614d17565b9150826002028217905092915050565b614d5a82613a7f565b67ffffffffffffffff811115614d7357614d7261390b565b5b614d7d82546142fe565b614d88828285614cc4565b600060209050601f831160018114614dbb5760008415614da9578287015190505b614db38582614d35565b865550614e1b565b601f198416614dc986614ba5565b60005b82811015614df157848901518255600182019150602085019450602081019050614dcc565b86831015614e0e5784890151614e0a601f891682614d17565b8355505b6001600288020188555050505b505050505050565b60006040820190508181036000830152614e3d8185614037565b90508181036020830152614e518184614037565b90509392505050565b6000604082019050614e6f600083018561380b565b614e7c602083018461380b565b9392505050565b6000819050919050565b6000614ea8614ea3614e9e84614e83565b614c29565b613795565b9050919050565b614eb881614e8d565b82525050565b6000604082019050614ed3600083018561380b565b614ee06020830184614eaf565b9392505050565b6000614ef282613795565b9150614efd83613795565b9250828201905080821115614f1557614f1461432f565b5b92915050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b6000614f77602983613a8a565b9150614f8282614f1b565b604082019050919050565b60006020820190508181036000830152614fa681614f6a565b9050919050565b7f5472616e73666572206f662074686520746f6b656e732061726520667265657a60008201527f65642074656d706f726172696c792e0000000000000000000000000000000000602082015250565b6000615009602f83613a8a565b915061501482614fad565b604082019050919050565b6000602082019050818103600083015261503881614ffc565b9050919050565b7f546f6b656e207472616e7366657220726573747269637465643a20526563656960008201527f766572206d7573742062652077686974656c6973746564000000000000000000602082015250565b600061509b603783613a8a565b91506150a68261503f565b604082019050919050565b600060208201905081810360008301526150ca8161508e565b9050919050565b7f546f6b656e207472616e7366657220726573747269637465643a20526563656960008201527f76657220697320626c61636b6c69737465640000000000000000000000000000602082015250565b600061512d603283613a8a565b9150615138826150d1565b604082019050919050565b6000602082019050818103600083015261515c81615120565b9050919050565b7f546f6b656e207472616e7366657220726573747269637465643a2053656e646560008201527f72206d7573742062652077686974656c69737465640000000000000000000000602082015250565b60006151bf603583613a8a565b91506151ca82615163565b604082019050919050565b600060208201905081810360008301526151ee816151b2565b9050919050565b7f546f6b656e207472616e7366657220726573747269637465643a2053656e646560008201527f7220697320626c61636b6c697374656400000000000000000000000000000000602082015250565b6000615251603083613a8a565b915061525c826151f5565b604082019050919050565b6000602082019050818103600083015261528081615244565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006152ae82615287565b6152b88185615292565b93506152c8818560208601613a9b565b6152d1816138fa565b840191505092915050565b600060a0820190506152f160008301886140b7565b6152fe60208301876140b7565b81810360408301526153108186614037565b905081810360608301526153248185614037565b9050818103608083015261533881846152a3565b90509695505050505050565b60008151905061535381613861565b92915050565b60006020828403121561536f5761536e61372d565b5b600061537d84828501615344565b91505092915050565b60008160e01c9050919050565b600060033d11156153b25760046000803e6153af600051615386565b90505b90565b600060443d10615442576153c7613723565b60043d036004823e80513d602482011167ffffffffffffffff821117156153ef575050615442565b808201805167ffffffffffffffff81111561540d5750505050615442565b80602083010160043d03850181111561542a575050505050615442565b6154398260200185018661393a565b82955050505050505b90565b600060a08201905061545a60008301886140b7565b61546760208301876140b7565b615474604083018661380b565b615481606083018561380b565b818103608083015261549381846152a3565b9050969550505050505056fea26469706673582212206d1a786d13ccd2383c3cc70619f4e6595aa1f20e264e1728a3b80bdd0e0cedf364736f6c6343000812003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000b5f2900d10540da3e3938aa56d8a896209db986a0000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000000001954656e676765722044657365727420536f6c6172205061726b00000000000000000000000000000000000000000000000000000000000000000000000000000841424c5830303031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006e68747470733a2f2f7277616c747a2d6e66742e73332e61702d736f7574682d312e616d617a6f6e6177732e636f6d2f6173736574626c6f782f70726f6a656374732f696d616765732f6f786339627a63363563356e626f6d3570783236386a78336669356c61317a6e2e6a706567000000000000000000000000000000000000