60a06040525f600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff02191690831515021790555060405180606001604052806036815260200162004d8e60369139600c9081620000619190620005ba565b503480156200006e575f80fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280600981526020017f57686f6f707369657300000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f57484f4f50000000000000000000000000000000000000000000000000000000815250815f9081620001029190620005ba565b508060019081620001149190620005ba565b5050505f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115620002fb578015620001cc576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b815260040162000197929190620006e1565b5f604051808303815f87803b158015620001af575f80fd5b505af1158015620001c2573d5f803e3d5ffd5b50505050620002fa565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000280576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b81526004016200024b929190620006e1565b5f604051808303815f87803b15801562000263575f80fd5b505af115801562000276573d5f803e3d5ffd5b50505050620002f9565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b8152600401620002c991906200070c565b5f604051808303815f87803b158015620002e1575f80fd5b505af1158015620002f4573d5f803e3d5ffd5b505050505b5b5b50506200030e336200031c60201b60201c565b426080818152505062000727565b8060601b60601c905080638b78c6d81955805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620003d257607f821691505b602082108103620003e857620003e76200038d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200044c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200040f565b6200045886836200040f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004a26200049c620004968462000470565b62000479565b62000470565b9050919050565b5f819050919050565b620004bd8362000482565b620004d5620004cc82620004a9565b8484546200041b565b825550505050565b5f90565b620004eb620004dd565b620004f8818484620004b2565b505050565b5b818110156200051f57620005135f82620004e1565b600181019050620004fe565b5050565b601f8211156200056e576200053881620003ee565b620005438462000400565b8101602085101562000553578190505b6200056b620005628562000400565b830182620004fd565b50505b505050565b5f82821c905092915050565b5f620005905f198460080262000573565b1980831691505092915050565b5f620005aa83836200057f565b9150826002028217905092915050565b620005c58262000356565b67ffffffffffffffff811115620005e157620005e062000360565b5b620005ed8254620003ba565b620005fa82828562000523565b5f60209050601f83116001811462000630575f84156200061b578287015190505b6200062785826200059d565b86555062000696565b601f1984166200064086620003ee565b5f5b82811015620006695784890151825560018201915060208501945060208101905062000642565b8683101562000689578489015162000685601f8916826200057f565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620006c9826200069e565b9050919050565b620006db81620006bd565b82525050565b5f604082019050620006f65f830185620006d0565b620007056020830184620006d0565b9392505050565b5f602082019050620007215f830184620006d0565b92915050565b6080516146406200074e5f395f81816110de015281816115f8015261180b01526146405ff3fe60806040526004361061025b575f3560e01c80636352211e11610143578063c60360f7116100b5578063e985e9c511610079578063e985e9c514610845578063eca30a4114610881578063ef5d9ae8146108bd578063f04e283e146108f9578063f2fde38b14610915578063fee81cf4146109315761025b565b8063c60360f71461074f578063c668286214610779578063c67c74d4146107a3578063c87b56dd146107cd578063e5267d17146108095761025b565b80638da5cb5b116101075780638da5cb5b1461065757806395d89b41146106815780639abc8320146106ab5780639ced0e9b146106d5578063a22cb465146106ff578063b88d4fde146107275761025b565b80636352211e1461059757806370a08231146105d3578063715018a61461060f5780637e082c16146106195780638c1ceda51461062f5761025b565b80632f745c59116101dc57806342842e0e116101a057806342842e0e146104c35780634f6ccce7146104eb57806351f468c01461052757806354d1f13d1461054f57806355f804b3146105595780635e08dff6146105815761025b565b80632f745c59146104015780633745ee951461043d578063381b1e5d14610467578063398280eb1461048357806341f43434146104995761025b565b806315d655c91161022357806315d655c91461035357806317d819d01461037d57806318160ddd146103a557806323b872dd146103cf57806325692962146103f75761025b565b806301ffc9a71461025f57806306fdde031461029b578063081812fc146102c557806308e0415814610301578063095ea7b31461032b575b5f80fd5b34801561026a575f80fd5b506102856004803603810190610280919061312d565b61096d565b6040516102929190613172565b60405180910390f35b3480156102a6575f80fd5b506102af61097e565b6040516102bc9190613215565b60405180910390f35b3480156102d0575f80fd5b506102eb60048036038101906102e69190613268565b610a0d565b6040516102f891906132d2565b60405180910390f35b34801561030c575f80fd5b50610315610a4f565b6040516103229190613346565b60405180910390f35b348015610336575f80fd5b50610351600480360381019061034c9190613389565b610a74565b005b34801561035e575f80fd5b50610367610a8d565b60405161037491906133d6565b60405180910390f35b348015610388575f80fd5b506103a3600480360381019061039e91906133ef565b610a93565b005b3480156103b0575f80fd5b506103b9610ade565b6040516103c691906133d6565b60405180910390f35b3480156103da575f80fd5b506103f560048036038101906103f0919061341a565b610aea565b005b6103ff610b39565b005b34801561040c575f80fd5b5061042760048036038101906104229190613389565b610b8a565b60405161043491906133d6565b60405180910390f35b348015610448575f80fd5b50610451610c2a565b60405161045e91906132d2565b60405180910390f35b610481600480360381019061047c91906134cb565b610c42565b005b34801561048e575f80fd5b50610497610e1b565b005b3480156104a4575f80fd5b506104ad610e4d565b6040516104ba9190613536565b60405180910390f35b3480156104ce575f80fd5b506104e960048036038101906104e4919061341a565b610e5f565b005b3480156104f6575f80fd5b50610511600480360381019061050c9190613268565b610eae565b60405161051e91906133d6565b60405180910390f35b348015610532575f80fd5b5061054d60048036038101906105489190613268565b610f1c565b005b610557610f2e565b005b348015610564575f80fd5b5061057f600480360381019061057a9190613677565b610f67565b005b34801561058c575f80fd5b50610595610f82565b005b3480156105a2575f80fd5b506105bd60048036038101906105b89190613268565b6112a6565b6040516105ca91906132d2565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f491906133ef565b61132a565b60405161060691906133d6565b60405180910390f35b6106176113de565b005b348015610624575f80fd5b5061062d6113f1565b005b34801561063a575f80fd5b5061065560048036038101906106509190613268565b611425565b005b348015610662575f80fd5b5061066b6114cd565b60405161067891906132d2565b60405180910390f35b34801561068c575f80fd5b506106956114da565b6040516106a29190613215565b60405180910390f35b3480156106b6575f80fd5b506106bf61156a565b6040516106cc9190613215565b60405180910390f35b3480156106e0575f80fd5b506106e96115f6565b6040516106f691906133d6565b60405180910390f35b34801561070a575f80fd5b50610725600480360381019061072091906136e8565b61161a565b005b348015610732575f80fd5b5061074d600480360381019061074891906137c4565b611633565b005b34801561075a575f80fd5b50610763611695565b6040516107709190613172565b60405180910390f35b348015610784575f80fd5b5061078d6116a8565b60405161079a9190613215565b60405180910390f35b3480156107ae575f80fd5b506107b76116e1565b6040516107c49190613172565b60405180910390f35b3480156107d8575f80fd5b506107f360048036038101906107ee9190613268565b6116f3565b6040516108009190613215565b60405180910390f35b348015610814575f80fd5b5061082f600480360381019061082a91906133ef565b611764565b60405161083c91906133d6565b60405180910390f35b348015610850575f80fd5b5061086b60048036038101906108669190613844565b61187c565b6040516108789190613172565b60405180910390f35b34801561088c575f80fd5b506108a760048036038101906108a291906133ef565b61190a565b6040516108b491906133d6565b60405180910390f35b3480156108c8575f80fd5b506108e360048036038101906108de91906133ef565b61191f565b6040516108f091906133d6565b60405180910390f35b610913600480360381019061090e91906133ef565b611934565b005b61092f600480360381019061092a91906133ef565b611972565b005b34801561093c575f80fd5b50610957600480360381019061095291906133ef565b61199b565b60405161096491906133d6565b60405180910390f35b5f610977826119b4565b9050919050565b60605f805461098c906138af565b80601f01602080910402602001604051908101604052809291908181526020018280546109b8906138af565b8015610a035780601f106109da57610100808354040283529160200191610a03565b820191905f5260205f20905b8154815290600101906020018083116109e657829003601f168201915b5050505050905090565b5f610a1782611a14565b60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b81610a7e81611a5f565b610a888383611b59565b505050565b600d5481565b610a9b611c6f565b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f600880549050905090565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b2857610b2733611a5f565b5b610b33848484611c8b565b50505050565b5f610b42611ceb565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f610b948361132a565b8210610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc9061394f565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b73565abc3feaa3bc3820b83620f4bbf16b5c4d47a381565b600b5f9054906101000a900460ff16610c87576040517f80cb55e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34600d5483839050610c99919061399a565b14610cd0576040517f313223b900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b82829050811015610e16573373ffffffffffffffffffffffffffffffffffffffff1673565abc3feaa3bc3820b83620f4bbf16b5c4d47a373ffffffffffffffffffffffffffffffffffffffff16636352211e858585818110610d3757610d366139db565b5b905060200201356040518263ffffffff1660e01b8152600401610d5a91906133d6565b602060405180830381865afa158015610d75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d999190613a1c565b73ffffffffffffffffffffffffffffffffffffffff1614610de6576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e0933848484818110610dfd57610dfc6139db565b5b90506020020135611cf5565b8080600101915050610cd2565b505050565b610e23611c6f565b600b5f9054906101000a900460ff1615600b5f6101000a81548160ff021916908315150217905550565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e9d57610e9c33611a5f565b5b610ea8848484611d12565b50505050565b5f610eb7610ade565b8210610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef90613ab7565b60405180910390fd5b60088281548110610f0c57610f0b6139db565b5b905f5260205f2001549050919050565b610f24611c6f565b80600d8190555050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f6f611c6f565b80600c9081610f7e9190613c69565b5050565b600b60019054906101000a900460ff16610fc8576040517f24fbaa9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610fd9610fd4611d31565b61132a565b90505f8103611014576040517fbe7538fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8060105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f4290505f82146110d6578062015180836110719190613d38565b11156110a9576040517f748614c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056201518083836110bb9190613d6b565b6110c59190613dcb565b6110cf919061399a565b925061111f565b6005620151807f0000000000000000000000000000000000000000000000000000000000000000836111089190613d6b565b6111129190613dcb565b61111c919061399a565b92505b8060105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f848461116e919061399a565b905080600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33670de0b6b3a76400008461120c919061399a565b6040518363ffffffff1660e01b8152600401611229929190613dfb565b6020604051808303815f875af1158015611245573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112699190613e36565b61129f576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b5f806112b183611d38565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890613eab565b60405180910390fd5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139090613f39565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6113e6611c6f565b6113ef5f611d71565b565b6113f9611c6f565b600b60019054906101000a900460ff1615600b60016101000a81548160ff021916908315150217905550565b61142d611c6f565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611489929190613dfb565b6020604051808303815f875af11580156114a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c99190613e36565b5050565b5f638b78c6d81954905090565b6060600180546114e9906138af565b80601f0160208091040260200160405190810160405280929190818152602001828054611515906138af565b80156115605780601f1061153757610100808354040283529160200191611560565b820191905f5260205f20905b81548152906001019060200180831161154357829003601f168201915b5050505050905090565b600c8054611577906138af565b80601f01602080910402602001604051908101604052809291908181526020018280546115a3906138af565b80156115ee5780601f106115c5576101008083540402835291602001916115ee565b820191905f5260205f20905b8154815290600101906020018083116115d157829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b8161162481611a5f565b61162e8383611dae565b505050565b61164461163e611d31565b83611dc4565b611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90613fc7565b60405180910390fd5b61168f84848484611e58565b50505050565b600b60019054906101000a900460ff1681565b6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525081565b600b5f9054906101000a900460ff1681565b60606116fd611eb4565b61170683611f44565b6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060405160200161174e9392919061401f565b6040516020818303038152906040529050919050565b5f80611776611771611d31565b61132a565b90505f4290505f820361178d575f92505050611877565b5f8060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81146118035760056201518082856117e89190613d6b565b6117f29190613dcb565b6117fc919061399a565b915061184c565b6005620151807f0000000000000000000000000000000000000000000000000000000000000000856118359190613d6b565b61183f9190613dcb565b611849919061399a565b91505b5f8483611859919061399a565b9050670de0b6b3a76400008161186f919061399a565b955050505050505b919050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6010602052805f5260405f205f915090505481565b600f602052805f5260405f205f915090505481565b61193c611c6f565b63389a75e1600c52805f526020600c20805442111561196257636f5e88185f526004601cfd5b5f81555061196f81611d71565b50565b61197a611c6f565b8060601b61198f57637448fbae5f526004601cfd5b61199881611d71565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a0d5750611a0c8261200e565b5b9050919050565b611a1d81612087565b611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5390613eab565b60405180910390fd5b50565b5f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115611b56576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b8152600401611ad592919061404f565b602060405180830381865afa158015611af0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b149190613e36565b611b5557806040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401611b4c91906132d2565b60405180910390fd5b5b50565b5f611b63826112a6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bca906140e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611bf2611d31565b73ffffffffffffffffffffffffffffffffffffffff161480611c215750611c2081611c1b611d31565b61187c565b5b611c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5790614174565b60405180910390fd5b611c6a83836120c7565b505050565b638b78c6d819543314611c89576382b429005f526004601cfd5b565b611c9c611c96611d31565b82611dc4565b611cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd290613fc7565b60405180910390fd5b611ce683838361217d565b505050565b5f6202a300905090565b611d0e828260405180602001604052805f815250612469565b5050565b611d2c83838360405180602001604052805f815250611633565b505050565b5f33905090565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b638b78c6d8198160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a38181555050565b611dc0611db9611d31565b83836124c3565b5050565b5f80611dcf836112a6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e115750611e10818561187c565b5b80611e4f57508373ffffffffffffffffffffffffffffffffffffffff16611e3784610a0d565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b611e6384848461217d565b611e6f8484848461262a565b611eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea590614202565b60405180910390fd5b50505050565b6060600c8054611ec3906138af565b80601f0160208091040260200160405190810160405280929190818152602001828054611eef906138af565b8015611f3a5780601f10611f1157610100808354040283529160200191611f3a565b820191905f5260205f20905b815481529060010190602001808311611f1d57829003601f168201915b5050505050905090565b60605f6001611f52846127ac565b0190505f8167ffffffffffffffff811115611f7057611f6f613553565b5b6040519080825280601f01601f191660200182016040528015611fa25781602001600182028036833780820191505090505b5090505f82602001820190505b600115612003578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611ff857611ff7613d9e565b5b0494505f8503611faf575b819350505050919050565b5f7f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612080575061207f826128fd565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff166120a883611d38565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b8160045f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612137836112a6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b8273ffffffffffffffffffffffffffffffffffffffff1661219d826112a6565b73ffffffffffffffffffffffffffffffffffffffff16146121f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ea90614290565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122589061431e565b60405180910390fd5b61226e83838360016129de565b8273ffffffffffffffffffffffffffffffffffffffff1661228e826112a6565b73ffffffffffffffffffffffffffffffffffffffff16146122e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122db90614290565b60405180910390fd5b60045f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540392505081905550600160035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160025f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461246483838360016129f0565b505050565b61247383836129f6565b61247f5f84848461262a565b6124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b590614202565b60405180910390fd5b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252890614386565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161261d9190613172565b60405180910390a3505050565b5f61264a8473ffffffffffffffffffffffffffffffffffffffff16612c09565b1561279f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612673611d31565b8786866040518563ffffffff1660e01b815260040161269594939291906143f6565b6020604051808303815f875af19250505080156126d057506040513d601f19601f820116820180604052508101906126cd9190614454565b60015b61274f573d805f81146126fe576040519150601f19603f3d011682016040523d82523d5f602084013e612703565b606091505b505f815103612747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273e90614202565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506127a4565b600190505b949350505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612808577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816127fe576127fd613d9e565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612845576d04ee2d6d415b85acef8100000000838161283b5761283a613d9e565b5b0492506020810190505b662386f26fc10000831061287457662386f26fc10000838161286a57612869613d9e565b5b0492506010810190505b6305f5e100831061289d576305f5e100838161289357612892613d9e565b5b0492506008810190505b61271083106128c25761271083816128b8576128b7613d9e565b5b0492506004810190505b606483106128e557606483816128db576128da613d9e565b5b0492506002810190505b600a83106128f4576001810190505b80915050919050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806129c757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806129d757506129d682612c2b565b5b9050919050565b6129ea84848484612c94565b50505050565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5b906144c9565b60405180910390fd5b612a6d81612087565b15612aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa490614531565b60405180910390fd5b612aba5f838360016129de565b612ac381612087565b15612b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afa90614531565b60405180910390fd5b600160035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160025f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c055f838360016129f0565b5050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612ca084848484612def565b6001811115612ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdb906145bf565b60405180910390fd5b5f8290505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612d2957612d2481612df5565b612d68565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612d6757612d668582612e39565b5b5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612da957612da481612f8f565b612de8565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612de757612de6848261304f565b5b5b5050505050565b50505050565b60088054905060095f8381526020019081526020015f2081905550600881908060018154018082558091505060019003905f5260205f20015f909190919091505550565b5f6001612e458461132a565b612e4f9190613d6b565b90505f60075f8481526020019081526020015f20549050818114612f26575f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205490508060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f20819055508160075f8381526020019081526020015f2081905550505b60075f8481526020019081526020015f205f905560065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f905550505050565b5f6001600880549050612fa29190613d6b565b90505f60095f8481526020019081526020015f205490505f60088381548110612fce57612fcd6139db565b5b905f5260205f20015490508060088381548110612fee57612fed6139db565b5b905f5260205f2001819055508160095f8381526020019081526020015f208190555060095f8581526020019081526020015f205f90556008805480613036576130356145dd565b5b600190038181905f5260205f20015f9055905550505050565b5f6130598361132a565b90508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055508060075f8481526020019081526020015f2081905550505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61310c816130d8565b8114613116575f80fd5b50565b5f8135905061312781613103565b92915050565b5f60208284031215613142576131416130d0565b5b5f61314f84828501613119565b91505092915050565b5f8115159050919050565b61316c81613158565b82525050565b5f6020820190506131855f830184613163565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156131c25780820151818401526020810190506131a7565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6131e78261318b565b6131f18185613195565b93506132018185602086016131a5565b61320a816131cd565b840191505092915050565b5f6020820190508181035f83015261322d81846131dd565b905092915050565b5f819050919050565b61324781613235565b8114613251575f80fd5b50565b5f813590506132628161323e565b92915050565b5f6020828403121561327d5761327c6130d0565b5b5f61328a84828501613254565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6132bc82613293565b9050919050565b6132cc816132b2565b82525050565b5f6020820190506132e55f8301846132c3565b92915050565b5f819050919050565b5f61330e61330961330484613293565b6132eb565b613293565b9050919050565b5f61331f826132f4565b9050919050565b5f61333082613315565b9050919050565b61334081613326565b82525050565b5f6020820190506133595f830184613337565b92915050565b613368816132b2565b8114613372575f80fd5b50565b5f813590506133838161335f565b92915050565b5f806040838503121561339f5761339e6130d0565b5b5f6133ac85828601613375565b92505060206133bd85828601613254565b9150509250929050565b6133d081613235565b82525050565b5f6020820190506133e95f8301846133c7565b92915050565b5f60208284031215613404576134036130d0565b5b5f61341184828501613375565b91505092915050565b5f805f60608486031215613431576134306130d0565b5b5f61343e86828701613375565b935050602061344f86828701613375565b925050604061346086828701613254565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261348b5761348a61346a565b5b8235905067ffffffffffffffff8111156134a8576134a761346e565b5b6020830191508360208202830111156134c4576134c3613472565b5b9250929050565b5f80602083850312156134e1576134e06130d0565b5b5f83013567ffffffffffffffff8111156134fe576134fd6130d4565b5b61350a85828601613476565b92509250509250929050565b5f61352082613315565b9050919050565b61353081613516565b82525050565b5f6020820190506135495f830184613527565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613589826131cd565b810181811067ffffffffffffffff821117156135a8576135a7613553565b5b80604052505050565b5f6135ba6130c7565b90506135c68282613580565b919050565b5f67ffffffffffffffff8211156135e5576135e4613553565b5b6135ee826131cd565b9050602081019050919050565b828183375f83830152505050565b5f61361b613616846135cb565b6135b1565b9050828152602081018484840111156136375761363661354f565b5b6136428482856135fb565b509392505050565b5f82601f83011261365e5761365d61346a565b5b813561366e848260208601613609565b91505092915050565b5f6020828403121561368c5761368b6130d0565b5b5f82013567ffffffffffffffff8111156136a9576136a86130d4565b5b6136b58482850161364a565b91505092915050565b6136c781613158565b81146136d1575f80fd5b50565b5f813590506136e2816136be565b92915050565b5f80604083850312156136fe576136fd6130d0565b5b5f61370b85828601613375565b925050602061371c858286016136d4565b9150509250929050565b5f67ffffffffffffffff8211156137405761373f613553565b5b613749826131cd565b9050602081019050919050565b5f61376861376384613726565b6135b1565b9050828152602081018484840111156137845761378361354f565b5b61378f8482856135fb565b509392505050565b5f82601f8301126137ab576137aa61346a565b5b81356137bb848260208601613756565b91505092915050565b5f805f80608085870312156137dc576137db6130d0565b5b5f6137e987828801613375565b94505060206137fa87828801613375565b935050604061380b87828801613254565b925050606085013567ffffffffffffffff81111561382c5761382b6130d4565b5b61383887828801613797565b91505092959194509250565b5f806040838503121561385a576138596130d0565b5b5f61386785828601613375565b925050602061387885828601613375565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806138c657607f821691505b6020821081036138d9576138d8613882565b5b50919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f755f8201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b5f613939602b83613195565b9150613944826138df565b604082019050919050565b5f6020820190508181035f8301526139668161392d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6139a482613235565b91506139af83613235565b92508282026139bd81613235565b915082820484148315176139d4576139d361396d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613a168161335f565b92915050565b5f60208284031215613a3157613a306130d0565b5b5f613a3e84828501613a08565b91505092915050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f5f8201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b5f613aa1602c83613195565b9150613aac82613a47565b604082019050919050565b5f6020820190508181035f830152613ace81613a95565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613b317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613af6565b613b3b8683613af6565b95508019841693508086168417925050509392505050565b5f613b6d613b68613b6384613235565b6132eb565b613235565b9050919050565b5f819050919050565b613b8683613b53565b613b9a613b9282613b74565b848454613b02565b825550505050565b5f90565b613bae613ba2565b613bb9818484613b7d565b505050565b5b81811015613bdc57613bd15f82613ba6565b600181019050613bbf565b5050565b601f821115613c2157613bf281613ad5565b613bfb84613ae7565b81016020851015613c0a578190505b613c1e613c1685613ae7565b830182613bbe565b50505b505050565b5f82821c905092915050565b5f613c415f1984600802613c26565b1980831691505092915050565b5f613c598383613c32565b9150826002028217905092915050565b613c728261318b565b67ffffffffffffffff811115613c8b57613c8a613553565b5b613c9582546138af565b613ca0828285613be0565b5f60209050601f831160018114613cd1575f8415613cbf578287015190505b613cc98582613c4e565b865550613d30565b601f198416613cdf86613ad5565b5f5b82811015613d0657848901518255600182019150602085019450602081019050613ce1565b86831015613d235784890151613d1f601f891682613c32565b8355505b6001600288020188555050505b505050505050565b5f613d4282613235565b9150613d4d83613235565b9250828201905080821115613d6557613d6461396d565b5b92915050565b5f613d7582613235565b9150613d8083613235565b9250828203905081811115613d9857613d9761396d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613dd582613235565b9150613de083613235565b925082613df057613def613d9e565b5b828204905092915050565b5f604082019050613e0e5f8301856132c3565b613e1b60208301846133c7565b9392505050565b5f81519050613e30816136be565b92915050565b5f60208284031215613e4b57613e4a6130d0565b5b5f613e5884828501613e22565b91505092915050565b7f4552433732313a20696e76616c696420746f6b656e20494400000000000000005f82015250565b5f613e95601883613195565b9150613ea082613e61565b602082019050919050565b5f6020820190508181035f830152613ec281613e89565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f7420612076615f8201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b5f613f23602983613195565b9150613f2e82613ec9565b604082019050919050565b5f6020820190508181035f830152613f5081613f17565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e655f8201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b5f613fb1602d83613195565b9150613fbc82613f57565b604082019050919050565b5f6020820190508181035f830152613fde81613fa5565b9050919050565b5f81905092915050565b5f613ff98261318b565b6140038185613fe5565b93506140138185602086016131a5565b80840191505092915050565b5f61402a8286613fef565b91506140368285613fef565b91506140428284613fef565b9150819050949350505050565b5f6040820190506140625f8301856132c3565b61406f60208301846132c3565b9392505050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e655f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140d0602183613195565b91506140db82614076565b604082019050919050565b5f6020820190508181035f8301526140fd816140c4565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f5f8201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b5f61415e603d83613195565b915061416982614104565b604082019050919050565b5f6020820190508181035f83015261418b81614152565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e2045524337323152655f8201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b5f6141ec603283613195565b91506141f782614192565b604082019050919050565b5f6020820190508181035f830152614219816141e0565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f7272656374205f8201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b5f61427a602583613195565b915061428582614220565b604082019050919050565b5f6020820190508181035f8301526142a78161426e565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614308602483613195565b9150614313826142ae565b604082019050919050565b5f6020820190508181035f830152614335816142fc565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c6572000000000000005f82015250565b5f614370601983613195565b915061437b8261433c565b602082019050919050565b5f6020820190508181035f83015261439d81614364565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f6143c8826143a4565b6143d281856143ae565b93506143e28185602086016131a5565b6143eb816131cd565b840191505092915050565b5f6080820190506144095f8301876132c3565b61441660208301866132c3565b61442360408301856133c7565b818103606083015261443581846143be565b905095945050505050565b5f8151905061444e81613103565b92915050565b5f60208284031215614469576144686130d0565b5b5f61447684828501614440565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f20616464726573735f82015250565b5f6144b3602083613195565b91506144be8261447f565b602082019050919050565b5f6020820190508181035f8301526144e0816144a7565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e746564000000005f82015250565b5f61451b601c83613195565b9150614526826144e7565b602082019050919050565b5f6020820190508181035f8301526145488161450f565b9050919050565b7f455243373231456e756d657261626c653a20636f6e73656375746976652074725f8201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b5f6145a9603583613195565b91506145b48261454f565b604082019050919050565b5f6020820190508181035f8301526145d68161459d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220b33bbdf69fe3fc3dffa8908864c177301ae8d1fb98204f8b3567fee043a3db2764736f6c63430008150033697066733a2f2f516d594a47456f61337a524e4d56464c735263677a584e4e5133673248735151656970534c4673746976573468422f