60806040526001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506040518060400160405280601081526020017f57414c4c205354524545542042414259000000000000000000000000000000008152506040518060400160405280600381526020017f57534200000000000000000000000000000000000000000000000000000000008152508160039081620000b7919062000e6a565b508060049081620000c9919062000e6a565b505050620000ec620000e06200069f60201b60201c565b620006a760201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d5919062000fbb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000285919062000fbb565b6040518363ffffffff1660e01b8152600401620002a492919062000ffe565b6020604051808303816000875af1158015620002c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ea919062000fbb565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200035f600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200076d60201b60201c565b62000394600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200082060201b60201c565b60006a52b7d2dcc80cd2e400000090506064600482620003b591906200105a565b620003c19190620010d4565b600a819055506064600482620003d891906200105a565b620003e49190620010d4565b600c81905550612710600a82620003fc91906200105a565b620004089190620010d4565b600b819055506000600f81905550600060118190555060006010819055506000601381905550600060148190555073bf7650f67c47f7569fa436eefcd5effbe6c109be600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bf7650f67c47f7569fa436eefcd5effbe6c109be600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601281905550601054601154600f54620004fd91906200110c565b6200050991906200110c565b600e8190555062000531620005236200090a60201b60201c565b60016200082060201b60201c565b62000566600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200082060201b60201c565b6200059b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200082060201b60201c565b620005ae3060016200093460201b60201c565b620005c361dead60016200093460201b60201c565b620005e5620005d76200090a60201b60201c565b60016200093460201b60201c565b6200061a600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200093460201b60201c565b6200064f600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200093460201b60201c565b620006623060016200082060201b60201c565b6200067761dead60016200082060201b60201c565b620006986200068b6200090a60201b60201c565b8262000a6e60201b60201c565b50620012a4565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007d682826200082060201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fb6f1aed3b1ced30ce666a8b7f2e12b02aed514cdab677738640be9937f13320560405160405180910390a35050565b620008306200069f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008566200090a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a690620011a8565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620009446200069f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200096a6200090a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009ba90620011a8565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f63a6b86eff36a284726100fb6b45e2807a27008f3a439370ffae17d8386f25c98260405162000a629190620011e7565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000ae0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad79062001254565b60405180910390fd5b62000af46000838362000be660201b60201c565b806002600082825462000b0891906200110c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b5f91906200110c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bc6919062001287565b60405180910390a362000be26000838362000beb60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c7257607f821691505b60208210810362000c885762000c8762000c2a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000cf27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cb3565b62000cfe868362000cb3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d4b62000d4562000d3f8462000d16565b62000d20565b62000d16565b9050919050565b6000819050919050565b62000d678362000d2a565b62000d7f62000d768262000d52565b84845462000cc0565b825550505050565b600090565b62000d9662000d87565b62000da381848462000d5c565b505050565b5b8181101562000dcb5762000dbf60008262000d8c565b60018101905062000da9565b5050565b601f82111562000e1a5762000de48162000c8e565b62000def8462000ca3565b8101602085101562000dff578190505b62000e1762000e0e8562000ca3565b83018262000da8565b50505b505050565b600082821c905092915050565b600062000e3f6000198460080262000e1f565b1980831691505092915050565b600062000e5a838362000e2c565b9150826002028217905092915050565b62000e758262000bf0565b67ffffffffffffffff81111562000e915762000e9062000bfb565b5b62000e9d825462000c59565b62000eaa82828562000dcf565b600060209050601f83116001811462000ee2576000841562000ecd578287015190505b62000ed9858262000e4c565b86555062000f49565b601f19841662000ef28662000c8e565b60005b8281101562000f1c5784890151825560018201915060208501945060208101905062000ef5565b8683101562000f3c578489015162000f38601f89168262000e2c565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f838262000f56565b9050919050565b62000f958162000f76565b811462000fa157600080fd5b50565b60008151905062000fb58162000f8a565b92915050565b60006020828403121562000fd45762000fd362000f51565b5b600062000fe48482850162000fa4565b91505092915050565b62000ff88162000f76565b82525050565b600060408201905062001015600083018562000fed565b62001024602083018462000fed565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010678262000d16565b9150620010748362000d16565b9250828202620010848162000d16565b915082820484148315176200109e576200109d6200102b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010e18262000d16565b9150620010ee8362000d16565b925082620011015762001100620010a5565b5b828204905092915050565b6000620011198262000d16565b9150620011268362000d16565b92508282019050808211156200114157620011406200102b565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200119060208362001147565b91506200119d8262001158565b602082019050919050565b60006020820190508181036000830152620011c38162001181565b9050919050565b60008115159050919050565b620011e181620011ca565b82525050565b6000602082019050620011fe6000830184620011d6565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200123c601f8362001147565b9150620012498262001204565b602082019050919050565b600060208201905081810360008301526200126f816200122d565b9050919050565b620012818162000d16565b82525050565b60006020820190506200129e600083018462001276565b92915050565b6145cf80620012b46000396000f3fe60806040526004361061021e5760003560e01c80637571336a11610123578063b62496f5116100ab578063d257b34f1161006f578063d257b34f146107ba578063dd62ed3e146107f7578063e73b90cd14610834578063f2fde38b1461085f578063fea4fa4d1461088857610225565b8063b62496f5146106d9578063bfcc47d614610716578063c18bc1951461073f578063cb94a37014610768578063ccbad1eb1461079157610225565b80639c74daf0116100f25780639c74daf0146106065780639cad674114610631578063a457c2d714610648578063a9059cbb14610685578063ae76b090146106c257610225565b80637571336a1461055c57806382247ec0146105855780638da5cb5b146105b057806395d89b41146105db57610225565b8063313ce567116101a65780635342acb4116101755780635342acb414610475578063583e0568146104b257806370a08231146104dd578063715018a61461051a578063751039fc1461053157610225565b8063313ce567146103cd578063339578fe146103f8578063395093511461040f5780634ec27aac1461044c57610225565b8063203e727e116101ed578063203e727e146102e8578063224290851461031157806323b872dd1461033a57806327f4d7d5146103775780632fd689e3146103a257610225565b806304beaeb81461022a57806306fdde0314610255578063095ea7b31461028057806318160ddd146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108b3565b60405161024c91906132e8565b60405180910390f35b34801561026157600080fd5b5061026a6108b9565b6040516102779190613393565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a29190613444565b61094b565b6040516102b4919061349f565b60405180910390f35b3480156102c957600080fd5b506102d261096e565b6040516102df91906132e8565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a91906134ba565b610978565b005b34801561031d57600080fd5b50610338600480360381019061033391906134e7565b610a87565b005b34801561034657600080fd5b50610361600480360381019061035c919061353a565b610b86565b60405161036e919061349f565b60405180910390f35b34801561038357600080fd5b5061038c610bb5565b604051610399919061349f565b60405180910390f35b3480156103ae57600080fd5b506103b7610bc8565b6040516103c491906132e8565b60405180910390f35b3480156103d957600080fd5b506103e2610bce565b6040516103ef91906135a9565b60405180910390f35b34801561040457600080fd5b5061040d610bd7565b005b34801561041b57600080fd5b5061043660048036038101906104319190613444565b610c5d565b604051610443919061349f565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e91906135f0565b610c94565b005b34801561048157600080fd5b5061049c60048036038101906104979190613630565b610df4565b6040516104a9919061349f565b60405180910390f35b3480156104be57600080fd5b506104c7610e4a565b6040516104d491906136bc565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190613630565b610e70565b60405161051191906132e8565b60405180910390f35b34801561052657600080fd5b5061052f610eb8565b005b34801561053d57600080fd5b50610546610f40565b604051610553919061349f565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e91906135f0565b610fe0565b005b34801561059157600080fd5b5061059a6110b7565b6040516105a791906132e8565b60405180910390f35b3480156105bc57600080fd5b506105c56110bd565b6040516105d291906136e6565b60405180910390f35b3480156105e757600080fd5b506105f06110e7565b6040516105fd9190613393565b60405180910390f35b34801561061257600080fd5b5061061b611179565b60405161062891906136e6565b60405180910390f35b34801561063d57600080fd5b5061064661119f565b005b34801561065457600080fd5b5061066f600480360381019061066a9190613444565b611238565b60405161067c919061349f565b60405180910390f35b34801561069157600080fd5b506106ac60048036038101906106a79190613444565b6112af565b6040516106b9919061349f565b60405180910390f35b3480156106ce57600080fd5b506106d76112d2565b005b3480156106e557600080fd5b5061070060048036038101906106fb9190613630565b611358565b60405161070d919061349f565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190613630565b611378565b005b34801561074b57600080fd5b50610766600480360381019061076191906134ba565b611438565b005b34801561077457600080fd5b5061078f600480360381019061078a9190613630565b611547565b005b34801561079d57600080fd5b506107b860048036038101906107b391906135f0565b611607565b005b3480156107c657600080fd5b506107e160048036038101906107dc91906134ba565b61172c565b6040516107ee919061349f565b60405180910390f35b34801561080357600080fd5b5061081e60048036038101906108199190613701565b611881565b60405161082b91906132e8565b60405180910390f35b34801561084057600080fd5b50610849611908565b604051610856919061349f565b60405180910390f35b34801561086b57600080fd5b5061088660048036038101906108819190613630565b61191b565b005b34801561089457600080fd5b5061089d611a12565b6040516108aa91906132e8565b60405180910390f35b600a5481565b6060600380546108c890613770565b80601f01602080910402602001604051908101604052809291908181526020018280546108f490613770565b80156109415780601f1061091657610100808354040283529160200191610941565b820191906000526020600020905b81548152906001019060200180831161092457829003601f168201915b5050505050905090565b600080610956611a18565b9050610963818585611a20565b600191505092915050565b6000600254905090565b610980611a18565b73ffffffffffffffffffffffffffffffffffffffff1661099e6110bd565b73ffffffffffffffffffffffffffffffffffffffff16146109f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109eb906137ed565b60405180910390fd5b670de0b6b3a76400006103e86001610a0a61096e565b610a14919061383c565b610a1e91906138ad565b610a2891906138ad565b811015610a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6190613950565b60405180910390fd5b670de0b6b3a764000081610a7e919061383c565b600a8190555050565b610a8f611a18565b73ffffffffffffffffffffffffffffffffffffffff16610aad6110bd565b73ffffffffffffffffffffffffffffffffffffffff1614610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afa906137ed565b60405180910390fd5b82600f819055508160118190555080601081905550601054601154600f54610b2b9190613970565b610b359190613970565b600e81905550600a600e541115610b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b78906139f0565b60405180910390fd5b505050565b600080610b91611a18565b9050610b9e858285611be9565b610ba9858585611c75565b60019150509392505050565b600d60019054906101000a900460ff1681565b600b5481565b60006012905090565b610bdf611a18565b73ffffffffffffffffffffffffffffffffffffffff16610bfd6110bd565b73ffffffffffffffffffffffffffffffffffffffff1614610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a906137ed565b60405180910390fd5b6000601481905550565b600080610c68611a18565b9050610c89818585610c7a8589611881565b610c849190613970565b611a20565b600191505092915050565b610c9c611a18565b73ffffffffffffffffffffffffffffffffffffffff16610cba6110bd565b73ffffffffffffffffffffffffffffffffffffffff1614610d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d07906137ed565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9790613a82565b60405180910390fd5b610daa8282612446565b8015158273ffffffffffffffffffffffffffffffffffffffff167fb6f1aed3b1ced30ce666a8b7f2e12b02aed514cdab677738640be9937f13320560405160405180910390a35050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec0611a18565b73ffffffffffffffffffffffffffffffffffffffff16610ede6110bd565b73ffffffffffffffffffffffffffffffffffffffff1614610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b906137ed565b60405180910390fd5b610f3e60006124f1565b565b6000610f4a611a18565b73ffffffffffffffffffffffffffffffffffffffff16610f686110bd565b73ffffffffffffffffffffffffffffffffffffffff1614610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb5906137ed565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b610fe8611a18565b73ffffffffffffffffffffffffffffffffffffffff166110066110bd565b73ffffffffffffffffffffffffffffffffffffffff161461105c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611053906137ed565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546110f690613770565b80601f016020809104026020016040519081016040528092919081815260200182805461112290613770565b801561116f5780601f106111445761010080835404028352916020019161116f565b820191906000526020600020905b81548152906001019060200180831161115257829003601f168201915b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111a7611a18565b73ffffffffffffffffffffffffffffffffffffffff166111c56110bd565b73ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906137ed565b60405180910390fd5b6001600d60016101000a81548160ff021916908315150217905550565b600080611243611a18565b905060006112518286611881565b905083811015611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90613b14565b60405180910390fd5b6112a38286868403611a20565b60019250505092915050565b6000806112ba611a18565b90506112c7818585611c75565b600191505092915050565b6112da611a18565b73ffffffffffffffffffffffffffffffffffffffff166112f86110bd565b73ffffffffffffffffffffffffffffffffffffffff161461134e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611345906137ed565b60405180910390fd5b6000601381905550565b601b6020528060005260406000206000915054906101000a900460ff1681565b611380611a18565b73ffffffffffffffffffffffffffffffffffffffff1661139e6110bd565b73ffffffffffffffffffffffffffffffffffffffff16146113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb906137ed565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611440611a18565b73ffffffffffffffffffffffffffffffffffffffff1661145e6110bd565b73ffffffffffffffffffffffffffffffffffffffff16146114b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ab906137ed565b60405180910390fd5b670de0b6b3a76400006103e860056114ca61096e565b6114d4919061383c565b6114de91906138ad565b6114e891906138ad565b81101561152a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152190613ba6565b60405180910390fd5b670de0b6b3a76400008161153e919061383c565b600c8190555050565b61154f611a18565b73ffffffffffffffffffffffffffffffffffffffff1661156d6110bd565b73ffffffffffffffffffffffffffffffffffffffff16146115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba906137ed565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61160f611a18565b73ffffffffffffffffffffffffffffffffffffffff1661162d6110bd565b73ffffffffffffffffffffffffffffffffffffffff1614611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a906137ed565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f63a6b86eff36a284726100fb6b45e2807a27008f3a439370ffae17d8386f25c982604051611720919061349f565b60405180910390a25050565b6000611736611a18565b73ffffffffffffffffffffffffffffffffffffffff166117546110bd565b73ffffffffffffffffffffffffffffffffffffffff16146117aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a1906137ed565b60405180910390fd5b620186a060016117b861096e565b6117c2919061383c565b6117cc91906138ad565b82101561180e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180590613c38565b60405180910390fd5b6103e8600561181b61096e565b611825919061383c565b61182f91906138ad565b821115611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186890613cca565b60405180910390fd5b81600b8190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d60009054906101000a900460ff1681565b611923611a18565b73ffffffffffffffffffffffffffffffffffffffff166119416110bd565b73ffffffffffffffffffffffffffffffffffffffff1614611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e906137ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fd90613d5c565b60405180910390fd5b611a0f816124f1565b50565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8690613dee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613e80565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bdc91906132e8565b60405180910390a3505050565b6000611bf58484611881565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c6f5781811015611c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5890613eec565b60405180910390fd5b611c6e8484848403611a20565b5b50505050565b6000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d185750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8090613f7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def90614010565b60405180910390fd5b600d60019054906101000a900460ff1680611e105750805b611e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e469061407c565b60405180910390fd5b60008203611e6957611e63848460006125b7565b50612441565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611f125750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611fbd5750601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90506000611fc96110bd565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148061203457506120056110bd565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b905060008073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148061209f575061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b9050600082806120ac5750815b806120c35750600760149054906101000a900460ff165b9050600d60009054906101000a900460ff1680156120df575080155b1561229657841561218c57600a5487111561212f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121269061410e565b60405180910390fd5b600c5461213b89610e70565b886121469190613970565b1115612187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217e9061417a565b60405180910390fd5b612295565b8361229457601960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122355750601960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561229357600c5461224689610e70565b886122519190613970565b1115612292576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122899061417a565b60405180910390fd5b5b5b5b5b600760149054906101000a900460ff161580156122fd5750601b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123535750601860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123a95750601860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561242d576000601a5411156123c457505050505050612441565b60006123cf30610e70565b90506000600b5482101590508080156123e6575087155b1561242a576001600760146101000a81548160ff02191690831515021790555061240e612836565b6000600760146101000a81548160ff0219169083151502179055505b50505b61243a8989898789612b04565b5050505050505b505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506124a78282610fe0565b8015158273ffffffffffffffffffffffffffffffffffffffff167fb6f1aed3b1ced30ce666a8b7f2e12b02aed514cdab677738640be9937f13320560405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90613f7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268c90614010565b60405180910390fd5b6126a0838383612ceb565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271d9061420c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127b99190613970565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161281d91906132e8565b60405180910390a3612830848484612cf0565b50505050565b600061284130610e70565b905060006016546015546017546128589190613970565b6128629190613970565b905060008214806128735750600081145b1561287f575050612b02565b600b5482111561288f57600b5491505b6000600282601754856128a2919061383c565b6128ac91906138ad565b6128b691906138ad565b905060006128cd8285612cf590919063ffffffff16565b905060004790506128dd82612d0b565b60006128f28247612cf590919063ffffffff16565b9050600061291d8661290f60155485612f4e90919063ffffffff16565b612f6490919063ffffffff16565b905060006129488761293a60165486612f4e90919063ffffffff16565b612f6490919063ffffffff16565b90506000818385612959919061422c565b612963919061422c565b90506000871180156129755750600081115b156129c2576129848782612f7a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826017546040516129b993929190614260565b60405180910390a15b6000601781905550600060158190555060006016819055506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612a22906142c8565b60006040518083038185875af1925050503d8060008114612a5f576040519150601f19603f3d011682016040523d82523d6000602084013e612a64565b606091505b505090506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612ab0906142c8565b60006040518083038185875af1925050503d8060008114612aed576040519150601f19603f3d011682016040523d82523d6000602084013e612af2565b606091505b5050905050505050505050505050505b565b6000612b10868661305f565b90508015612c62576000600e5490506000600f5490508415612b5157601354600e54612b3c9190613970565b9150601354600f54612b4e9190613970565b90505b8315612b7c57601454600e54612b679190613970565b9150601454600f54612b799190613970565b90505b6000612ba46064612b96858a612f4e90919063ffffffff16565b612f6490919063ffffffff16565b90508260105482612bb5919061383c565b612bbf91906138ad565b60176000828254612bd09190613970565b92505081905550828282612be4919061383c565b612bee91906138ad565b60156000828254612bff9190613970565b925050819055508260115482612c15919061383c565b612c1f91906138ad565b60166000828254612c309190613970565b925050819055506000811115612c4c57612c4b8930836125b7565b5b8087612c58919061422c565b9650505050612cd7565b83612c6c87610e70565b1015612cd657601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612cd057612ccf853086611c75565b5b50612ce4565b5b612ce28686866125b7565b505b5050505050565b505050565b505050565b60008183612d03919061422c565b905092915050565b6000600267ffffffffffffffff811115612d2857612d276142dd565b5b604051908082528060200260200182016040528015612d565781602001602082028036833780820191505090505b5090503081600081518110612d6e57612d6d61430c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e399190614350565b81600181518110612e4d57612e4c61430c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612eb430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a20565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f18959493929190614476565b600060405180830381600087803b158015612f3257600080fd5b505af1158015612f46573d6000803e3d6000fd5b505050505050565b60008183612f5c919061383c565b905092915050565b60008183612f7291906138ad565b905092915050565b612fa730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a20565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612ff36110bd565b426040518863ffffffff1660e01b8152600401613015969594939291906144d0565b60606040518083038185885af1158015613033573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130589190614546565b5050505050565b600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561310d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90508080156131655750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613185576001601a600082825461317d9190613970565b925050819055505b6000601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132285750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490506000838061328a5750815b9050600080600e541190508080156132af5750600760149054906101000a900460ff16155b80156132b9575083155b80156132c25750815b9550505050505092915050565b6000819050919050565b6132e2816132cf565b82525050565b60006020820190506132fd60008301846132d9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561333d578082015181840152602081019050613322565b60008484015250505050565b6000601f19601f8301169050919050565b600061336582613303565b61336f818561330e565b935061337f81856020860161331f565b61338881613349565b840191505092915050565b600060208201905081810360008301526133ad818461335a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133e5826133ba565b9050919050565b6133f5816133da565b811461340057600080fd5b50565b600081359050613412816133ec565b92915050565b613421816132cf565b811461342c57600080fd5b50565b60008135905061343e81613418565b92915050565b6000806040838503121561345b5761345a6133b5565b5b600061346985828601613403565b925050602061347a8582860161342f565b9150509250929050565b60008115159050919050565b61349981613484565b82525050565b60006020820190506134b46000830184613490565b92915050565b6000602082840312156134d0576134cf6133b5565b5b60006134de8482850161342f565b91505092915050565b600080600060608486031215613500576134ff6133b5565b5b600061350e8682870161342f565b935050602061351f8682870161342f565b92505060406135308682870161342f565b9150509250925092565b600080600060608486031215613553576135526133b5565b5b600061356186828701613403565b935050602061357286828701613403565b92505060406135838682870161342f565b9150509250925092565b600060ff82169050919050565b6135a38161358d565b82525050565b60006020820190506135be600083018461359a565b92915050565b6135cd81613484565b81146135d857600080fd5b50565b6000813590506135ea816135c4565b92915050565b60008060408385031215613607576136066133b5565b5b600061361585828601613403565b9250506020613626858286016135db565b9150509250929050565b600060208284031215613646576136456133b5565b5b600061365484828501613403565b91505092915050565b6000819050919050565b600061368261367d613678846133ba565b61365d565b6133ba565b9050919050565b600061369482613667565b9050919050565b60006136a682613689565b9050919050565b6136b68161369b565b82525050565b60006020820190506136d160008301846136ad565b92915050565b6136e0816133da565b82525050565b60006020820190506136fb60008301846136d7565b92915050565b60008060408385031215613718576137176133b5565b5b600061372685828601613403565b925050602061373785828601613403565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061378857607f821691505b60208210810361379b5761379a613741565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137d760208361330e565b91506137e2826137a1565b602082019050919050565b60006020820190508181036000830152613806816137ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613847826132cf565b9150613852836132cf565b9250828202613860816132cf565b915082820484148315176138775761387661380d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138b8826132cf565b91506138c3836132cf565b9250826138d3576138d261387e565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061393a602f8361330e565b9150613945826138de565b604082019050919050565b600060208201905081810360008301526139698161392d565b9050919050565b600061397b826132cf565b9150613986836132cf565b925082820190508082111561399e5761399d61380d565b5b92915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b60006139da601d8361330e565b91506139e5826139a4565b602082019050919050565b60006020820190508181036000830152613a09816139cd565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613a6c60398361330e565b9150613a7782613a10565b604082019050919050565b60006020820190508181036000830152613a9b81613a5f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613afe60258361330e565b9150613b0982613aa2565b604082019050919050565b60006020820190508181036000830152613b2d81613af1565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613b9060248361330e565b9150613b9b82613b34565b604082019050919050565b60006020820190508181036000830152613bbf81613b83565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613c2260358361330e565b9150613c2d82613bc6565b604082019050919050565b60006020820190508181036000830152613c5181613c15565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613cb460348361330e565b9150613cbf82613c58565b604082019050919050565b60006020820190508181036000830152613ce381613ca7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d4660268361330e565b9150613d5182613cea565b604082019050919050565b60006020820190508181036000830152613d7581613d39565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613dd860248361330e565b9150613de382613d7c565b604082019050919050565b60006020820190508181036000830152613e0781613dcb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e6a60228361330e565b9150613e7582613e0e565b604082019050919050565b60006020820190508181036000830152613e9981613e5d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613ed6601d8361330e565b9150613ee182613ea0565b602082019050919050565b60006020820190508181036000830152613f0581613ec9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f6860258361330e565b9150613f7382613f0c565b604082019050919050565b60006020820190508181036000830152613f9781613f5b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613ffa60238361330e565b915061400582613f9e565b604082019050919050565b6000602082019050818103600083015261402981613fed565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061406660168361330e565b915061407182614030565b602082019050919050565b6000602082019050818103600083015261409581614059565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006140f860358361330e565b91506141038261409c565b604082019050919050565b60006020820190508181036000830152614127816140eb565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061416460138361330e565b915061416f8261412e565b602082019050919050565b6000602082019050818103600083015261419381614157565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006141f660268361330e565b91506142018261419a565b604082019050919050565b60006020820190508181036000830152614225816141e9565b9050919050565b6000614237826132cf565b9150614242836132cf565b925082820390508181111561425a5761425961380d565b5b92915050565b600060608201905061427560008301866132d9565b61428260208301856132d9565b61428f60408301846132d9565b949350505050565b600081905092915050565b50565b60006142b2600083614297565b91506142bd826142a2565b600082019050919050565b60006142d3826142a5565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061434a816133ec565b92915050565b600060208284031215614366576143656133b5565b5b60006143748482850161433b565b91505092915050565b6000819050919050565b60006143a261439d6143988461437d565b61365d565b6132cf565b9050919050565b6143b281614387565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143ed816133da565b82525050565b60006143ff83836143e4565b60208301905092915050565b6000602082019050919050565b6000614423826143b8565b61442d81856143c3565b9350614438836143d4565b8060005b8381101561446957815161445088826143f3565b975061445b8361440b565b92505060018101905061443c565b5085935050505092915050565b600060a08201905061448b60008301886132d9565b61449860208301876143a9565b81810360408301526144aa8186614418565b90506144b960608301856136d7565b6144c660808301846132d9565b9695505050505050565b600060c0820190506144e560008301896136d7565b6144f260208301886132d9565b6144ff60408301876143a9565b61450c60608301866143a9565b61451960808301856136d7565b61452660a08301846132d9565b979650505050505050565b60008151905061454081613418565b92915050565b60008060006060848603121561455f5761455e6133b5565b5b600061456d86828701614531565b935050602061457e86828701614531565b925050604061458f86828701614531565b915050925092509256fea264697066735822122056dbcdd82da202ddd9d22a487ae8592560ebad24efd3cc3b2244230b5c1d44a864736f6c63430008120033