60806040525f60085f6101000a81548160ff0219169083151502179055505f600860016101000a81548160ff02191690831515021790555060405180606001604052807f7241d8c8a5b5b12b0db4ac436356fa0af6d8000dac08809b0c61adec30d4ba345f1b81526020017f447c73654c3338f006a1824eaded0b179238f769bf4764dfa678e0b856339fba5f1b81526020017f06b6b1329873934583b9c936d744d343720863287fddaef410ef868be52ced685f1b8152506009906003620000ca9291906200077b565b50348015620000d7575f80fd5b5060405162005039380380620050398339818101604052810190620000fd919062000962565b338383815f908162000110919062000c4f565b50806001908162000122919062000c4f565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000198575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200018f919062000d76565b60405180910390fd5b620001a981620005c260201b60201c565b50620001bb816200068560201b60201c565b60405180608001604052805f61ffff168152602001600a61ffff168152602001600161ffff168152602001600160ff16815250600e5f8081526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548161ffff021916908361ffff1602179055506040820151815f0160046101000a81548161ffff021916908361ffff1602179055506060820151815f0160066101000a81548160ff021916908360ff16021790555090505060405180608001604052805f61ffff16815260200160c861ffff168152602001600b61ffff168152602001600160ff16815250600e5f600181526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548161ffff021916908361ffff1602179055506040820151815f0160046101000a81548161ffff021916908361ffff1602179055506060820151815f0160066101000a81548160ff021916908360ff16021790555090505060405180608001604052805f61ffff16815260200161016561ffff16815260200160d361ffff168152602001600160ff16815250600e5f600281526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548161ffff021916908361ffff1602179055506040820151815f0160046101000a81548161ffff021916908361ffff1602179055506060820151815f0160066101000a81548160ff021916908360ff16021790555090505060405180608001604052805f61ffff16815260200160c861ffff16815260200161023861ffff168152602001600160ff16815250600e5f600381526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548161ffff021916908361ffff1602179055506040820151815f0160046101000a81548161ffff021916908361ffff1602179055506060820151815f0160066101000a81548160ff021916908360ff16021790555090505060405180608001604052805f61ffff168152602001600a61ffff16815260200161030061ffff168152602001600a60ff16815250600e5f600481526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548161ffff021916908361ffff1602179055506040820151815f0160046101000a81548161ffff021916908361ffff1602179055506060820151815f0160066101000a81548160ff021916908360ff16021790555090505050505062000d91565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000695620006aa60201b60201c565b8060079081620006a6919062000c4f565b5050565b620006ba6200074c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006e06200075360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200074a576200070c6200074c60201b60201c565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040162000741919062000d76565b60405180910390fd5b565b5f33905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8260038101928215620007ad579160200282015b82811115620007ac5782518255916020019190600101906200078f565b5b509050620007bc9190620007c0565b5090565b5b80821115620007d9575f815f905550600101620007c1565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200083e82620007f6565b810181811067ffffffffffffffff8211171562000860576200085f62000806565b5b80604052505050565b5f62000874620007dd565b905062000882828262000833565b919050565b5f67ffffffffffffffff821115620008a457620008a362000806565b5b620008af82620007f6565b9050602081019050919050565b5f5b83811015620008db578082015181840152602081019050620008be565b5f8484015250505050565b5f620008fc620008f68462000887565b62000869565b9050828152602081018484840111156200091b576200091a620007f2565b5b62000928848285620008bc565b509392505050565b5f82601f830112620009475762000946620007ee565b5b815162000959848260208601620008e6565b91505092915050565b5f805f606084860312156200097c576200097b620007e6565b5b5f84015167ffffffffffffffff8111156200099c576200099b620007ea565b5b620009aa8682870162000930565b935050602084015167ffffffffffffffff811115620009ce57620009cd620007ea565b5b620009dc8682870162000930565b925050604084015167ffffffffffffffff81111562000a0057620009ff620007ea565b5b62000a0e8682870162000930565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a6757607f821691505b60208210810362000a7d5762000a7c62000a22565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000ae17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000aa4565b62000aed868362000aa4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b3762000b3162000b2b8462000b05565b62000b0e565b62000b05565b9050919050565b5f819050919050565b62000b528362000b17565b62000b6a62000b618262000b3e565b84845462000ab0565b825550505050565b5f90565b62000b8062000b72565b62000b8d81848462000b47565b505050565b5b8181101562000bb45762000ba85f8262000b76565b60018101905062000b93565b5050565b601f82111562000c035762000bcd8162000a83565b62000bd88462000a95565b8101602085101562000be8578190505b62000c0062000bf78562000a95565b83018262000b92565b50505b505050565b5f82821c905092915050565b5f62000c255f198460080262000c08565b1980831691505092915050565b5f62000c3f838362000c14565b9150826002028217905092915050565b62000c5a8262000a18565b67ffffffffffffffff81111562000c765762000c7562000806565b5b62000c82825462000a4f565b62000c8f82828562000bb8565b5f60209050601f83116001811462000cc5575f841562000cb0578287015190505b62000cbc858262000c32565b86555062000d2b565b601f19841662000cd58662000a83565b5f5b8281101562000cfe5784890151825560018201915060208501945060208101905062000cd7565b8683101562000d1e578489015162000d1a601f89168262000c14565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d5e8262000d33565b9050919050565b62000d708162000d52565b82525050565b5f60208201905062000d8b5f83018462000d65565b92915050565b61429a8062000d9f5f395ff3fe60806040526004361061020e575f3560e01c80638c874ebd11610117578063adb8e9d81161009f578063de9723571161006e578063de9723571461076a578063e985e9c514610794578063eb8d2444146107d0578063f2fde38b146107fa578063fcb6becb146108225761020e565b8063adb8e9d8146106d4578063b12dc991146106fc578063b88d4fde14610706578063c87b56dd1461072e5761020e565b80639d67f486116100e65780639d67f486146105f4578063a0617ad014610630578063a10866ef1461065a578063a22cb46514610670578063a78bf96e146106985761020e565b80638c874ebd1461054e5780638da5cb5b1461056457806395d89b411461058e578063986f4227146105b85761020e565b80632d7dbbca1161019a5780634fc281f2116101695780634fc281f21461045c57806355f804b3146104985780636352211e146104c057806370a08231146104fc578063715018a6146105385761020e565b80632d7dbbca146103ba57806334918dfd146103e25780633c70b357146103f857806342842e0e146104345761020e565b8063081812fc116101e1578063081812fc146102dc578063095ea7b31461031857806318160ddd1461034057806323b872dd1461036a5780632d21daf1146103925761020e565b8063015388681461021257806301ffc9a71461023a5780630338ee811461027657806306fdde03146102b2575b5f80fd5b34801561021d575f80fd5b5061023860048036038101906102339190613089565b61083e565b005b348015610245575f80fd5b50610260600480360381019061025b9190613138565b610869565b60405161026d919061317d565b60405180910390f35b348015610281575f80fd5b5061029c60048036038101906102979190613196565b61094a565b6040516102a991906131d0565b60405180910390f35b3480156102bd575f80fd5b506102c6610977565b6040516102d39190613263565b60405180910390f35b3480156102e7575f80fd5b5061030260048036038101906102fd9190613196565b610a06565b60405161030f91906132c2565b60405180910390f35b348015610323575f80fd5b5061033e60048036038101906103399190613305565b610a21565b005b34801561034b575f80fd5b50610354610a37565b60405161036191906131d0565b60405180910390f35b348015610375575f80fd5b50610390600480360381019061038b9190613343565b610b12565b005b34801561039d575f80fd5b506103b860048036038101906103b39190613478565b610c11565b005b3480156103c5575f80fd5b506103e060048036038101906103db9190613563565b610c2e565b005b3480156103ed575f80fd5b506103f6610e55565b005b348015610403575f80fd5b5061041e60048036038101906104199190613196565b610e87565b60405161042b91906135b9565b60405180910390f35b34801561043f575f80fd5b5061045a60048036038101906104559190613343565b610ea0565b005b348015610467575f80fd5b50610482600480360381019061047d91906135d2565b610ebf565b60405161048f919061317d565b60405180910390f35b3480156104a3575f80fd5b506104be60048036038101906104b991906135fd565b610f11565b005b3480156104cb575f80fd5b506104e660048036038101906104e19190613196565b610f2c565b6040516104f391906132c2565b60405180910390f35b348015610507575f80fd5b50610522600480360381019061051d91906135d2565b610f3d565b60405161052f91906131d0565b60405180910390f35b348015610543575f80fd5b5061054c610ff3565b005b348015610559575f80fd5b50610562611006565b005b34801561056f575f80fd5b50610578611369565b60405161058591906132c2565b60405180910390f35b348015610599575f80fd5b506105a2611391565b6040516105af9190613263565b60405180910390f35b3480156105c3575f80fd5b506105de60048036038101906105d99190613644565b611421565b6040516105eb919061317d565b60405180910390f35b3480156105ff575f80fd5b5061061a60048036038101906106159190613196565b61144b565b60405161062791906131d0565b60405180910390f35b34801561063b575f80fd5b50610644611479565b60405161065191906131d0565b60405180910390f35b348015610665575f80fd5b5061066e611559565b005b34801561067b575f80fd5b50610696600480360381019061069191906136da565b61158d565b005b3480156106a3575f80fd5b506106be60048036038101906106b99190613196565b6115a3565b6040516106cb91906131d0565b60405180910390f35b3480156106df575f80fd5b506106fa60048036038101906106f59190613563565b6115d1565b005b6107046117f8565b005b348015610711575f80fd5b5061072c600480360381019061072791906137b6565b6118aa565b005b348015610739575f80fd5b50610754600480360381019061074f9190613196565b6118c7565b6040516107619190613263565b60405180910390f35b348015610775575f80fd5b5061077e61192c565b60405161078b919061317d565b60405180910390f35b34801561079f575f80fd5b506107ba60048036038101906107b59190613836565b61193f565b6040516107c7919061317d565b60405180910390f35b3480156107db575f80fd5b506107e46119cd565b6040516107f1919061317d565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b91906135d2565b6119df565b005b61083c60048036038101906108379190613563565b611a63565b005b610846611c86565b8060105f8481526020019081526020015f2090816108649190613a6e565b505050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610943575061094282611d0d565b5b9050919050565b5f600e5f8381526020019081526020015f205f015f9054906101000a900461ffff1661ffff169050919050565b60605f8054610985906138a1565b80601f01602080910402602001604051908101604052809291908181526020018280546109b1906138a1565b80156109fc5780601f106109d3576101008083540402835291602001916109fc565b820191905f5260205f20905b8154815290600101906020018083116109df57829003601f168201915b5050505050905090565b5f610a1082611d76565b50610a1a82611dfc565b9050919050565b610a338282610a2e611e35565b611e3c565b5050565b5f600e5f600481526020019081526020015f205f015f9054906101000a900461ffff16600e5f600381526020019081526020015f205f015f9054906101000a900461ffff16600e5f600281526020019081526020015f205f015f9054906101000a900461ffff16600e5f600181526020019081526020015f205f015f9054906101000a900461ffff16600e5f8081526020019081526020015f205f015f9054906101000a900461ffff16610aeb9190613b77565b610af59190613b77565b610aff9190613b77565b610b099190613b77565b61ffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b82575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610b7991906132c2565b60405180910390fd5b5f610b958383610b90611e35565b611e4e565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c0b578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610c0293929190613bac565b60405180910390fd5b50505050565b610c19611c86565b806009906003610c2a929190612eae565b5050565b60085f9054906101000a900460ff16610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7390613c2b565b60405180910390fd5b5f60029050610cb28233604051602001610c969190613c8e565b6040516020818303038152906040528051906020012083611421565b610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce890613cf2565b60405180910390fd5b600e5f8281526020019081526020015f205f0160029054906101000a900461ffff1661ffff166001600e5f8481526020019081526020015f205f015f9054906101000a900461ffff16610d449190613b77565b61ffff161115610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090613d80565b60405180910390fd5b600e5f8281526020019081526020015f205f0160069054906101000a900460ff1660ff166001600c5f8481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e069190613d9e565b1115610e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e90613e41565b60405180910390fd5b610e518133612059565b5050565b610e5d611c86565b60085f9054906101000a900460ff161560085f6101000a81548160ff021916908315150217905550565b60098160038110610e96575f80fd5b015f915090505481565b610eba83838360405180602001604052805f8152506118aa565b505050565b5f600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610f19611c86565b8060079081610f289190613a6e565b5050565b5f610f3682611d76565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fae575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610fa591906132c2565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ffb611c86565b6110045f6121f8565b565b600860019054906101000a900460ff16611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c90613c2b565b60405180910390fd5b5f61105f336122bb565b9050600e5f8281526020019081526020015f205f0160029054906101000a900461ffff1661ffff166001600e5f8481526020019081526020015f205f015f9054906101000a900461ffff166110b49190613b77565b61ffff1611156110ca576110c7336122bb565b90505b600e5f8281526020019081526020015f205f0160029054906101000a900461ffff1661ffff166001600e5f8481526020019081526020015f205f015f9054906101000a900461ffff1661111d9190613b77565b61ffff161115611162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115990613d80565b60405180910390fd5b6001600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106111e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d990613e41565b60405180910390fd5b6001600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461122c9190613d9e565b600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600e5f8381526020019081526020015f205f015f9054906101000a900461ffff16905060018161129e9190613b77565b600e5f8481526020019081526020015f205f015f6101000a81548161ffff021916908361ffff1602179055506001600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611365336001600e5f8681526020019081526020015f205f0160049054906101000a900461ffff16846113529190613b77565b61135c9190613b77565b61ffff16612315565b5050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546113a0906138a1565b80601f01602080910402602001604051908101604052809291908181526020018280546113cc906138a1565b80156114175780601f106113ee57610100808354040283529160200191611417565b820191905f5260205f20905b8154815290600101906020018083116113fa57829003601f168201915b5050505050905090565b5f611442846009846003811061143a57611439613e5f565b5b015485612332565b90509392505050565b5f600e5f8381526020019081526020015f205f0160049054906101000a900461ffff1661ffff169050919050565b5f600e5f600481526020019081526020015f205f0160029054906101000a900461ffff16600e5f600381526020019081526020015f205f0160029054906101000a900461ffff16600e5f600281526020019081526020015f205f0160029054906101000a900461ffff16600e5f600181526020019081526020015f205f0160029054906101000a900461ffff16600e5f8081526020019081526020015f205f0160029054906101000a900461ffff166115329190613b77565b61153c9190613b77565b6115469190613b77565b6115509190613b77565b61ffff16905090565b611561611c86565b600860019054906101000a900460ff1615600860016101000a81548160ff021916908315150217905550565b61159f611598611e35565b8383612348565b5050565b5f600e5f8381526020019081526020015f205f0160029054906101000a900461ffff1661ffff169050919050565b60085f9054906101000a900460ff1661161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161690613c2b565b60405180910390fd5b5f6001905061165582336040516020016116399190613c8e565b6040516020818303038152906040528051906020012083611421565b611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b90613ed6565b60405180910390fd5b600e5f8281526020019081526020015f205f0160029054906101000a900461ffff1661ffff166001600e5f8481526020019081526020015f205f015f9054906101000a900461ffff166116e79190613b77565b61ffff16111561172c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172390613d80565b60405180910390fd5b600e5f8281526020019081526020015f205f0160069054906101000a900460ff1660ff166001600c5f8481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117a99190613d9e565b11156117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e190613e41565b60405180910390fd5b6117f48133612059565b5050565b611800611c86565b5f60049050600e5f8281526020019081526020015f205f0160029054906101000a900461ffff1661ffff166001600e5f8481526020019081526020015f205f015f9054906101000a900461ffff166118589190613b77565b61ffff16111561189d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189490613d80565b60405180910390fd5b6118a78133612059565b50565b6118b5848484610b12565b6118c1848484846124b1565b50505050565b60606118d282612663565b5f6118db6126ae565b90505f8151116118f95760405180602001604052805f815250611924565b806119038461273e565b604051602001611914929190613f78565b6040516020818303038152906040525b915050919050565b600860019054906101000a900460ff1681565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60085f9054906101000a900460ff1681565b6119e7611c86565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a57575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611a4e91906132c2565b60405180910390fd5b611a60816121f8565b50565b60085f9054906101000a900460ff16611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa890613c2b565b60405180910390fd5b5f611ae38233604051602001611ac79190613c8e565b6040516020818303038152906040528051906020012083611421565b611b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1990613ff0565b60405180910390fd5b600e5f8281526020019081526020015f205f0160029054906101000a900461ffff1661ffff166001600e5f8481526020019081526020015f205f015f9054906101000a900461ffff16611b759190613b77565b61ffff161115611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613d80565b60405180910390fd5b600e5f8281526020019081526020015f205f0160069054906101000a900460ff1660ff166001600c5f8481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c379190613d9e565b1115611c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6f90613e41565b60405180910390fd5b611c828133612059565b5050565b611c8e611e35565b73ffffffffffffffffffffffffffffffffffffffff16611cac611369565b73ffffffffffffffffffffffffffffffffffffffff1614611d0b57611ccf611e35565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611d0291906132c2565b60405180910390fd5b565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f80611d8183612808565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df357826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611dea91906131d0565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b611e498383836001612841565b505050565b5f80611e5984612808565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e9a57611e99818486612a00565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f2557611ed95f855f80612841565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611fa457600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6001600c5f8481526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120b29190613d9e565b600c5f8481526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600e5f8481526020019081526020015f205f015f9054906101000a900461ffff1690506001816121339190613b77565b600e5f8581526020019081526020015f205f015f6101000a81548161ffff021916908361ffff1602179055505f600e5f8581526020019081526020015f205f0160049054906101000a900461ffff1690506001600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506121f28382846121e99190613b77565b61ffff16612315565b50505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f806001436122ca919061400e565b405f1c90505f60034283866040516020016122e793929190614061565b604051602081830303815290604052805190602001205f1c61230991906140ca565b90508092505050919050565b61232e828260405180602001604052805f815250612ac3565b5050565b5f8261233e8584612ade565b1490509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123b857816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016123af91906132c2565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516124a4919061317d565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b111561265d578273ffffffffffffffffffffffffffffffffffffffff1663150b7a026124f4611e35565b8685856040518563ffffffff1660e01b8152600401612516949392919061414c565b6020604051808303815f875af192505050801561255157506040513d601f19601f8201168201806040525081019061254e91906141aa565b60015b6125d2573d805f811461257f576040519150601f19603f3d011682016040523d82523d5f602084013e612584565b606091505b505f8151036125ca57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016125c191906132c2565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461265b57836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161265291906132c2565b60405180910390fd5b505b50505050565b61266c81612b2c565b6126ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a29061421f565b60405180910390fd5b50565b6060600780546126bd906138a1565b80601f01602080910402602001604051908101604052809291908181526020018280546126e9906138a1565b80156127345780601f1061270b57610100808354040283529160200191612734565b820191905f5260205f20905b81548152906001019060200180831161271757829003601f168201915b5050505050905090565b60605f600161274c84612b6c565b0190505f8167ffffffffffffffff81111561276a57612769612f65565b5b6040519080825280601f01601f19166020018201604052801561279c5781602001600182028036833780820191505090505b5090505f82602001820190505b6001156127fd578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816127f2576127f161409d565b5b0494505f85036127a9575b819350505050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061287957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129ab575f61288884611d76565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128f257508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156129055750612903818461193f565b155b1561294757826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161293e91906132c2565b60405180910390fd5b81156129a957838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b612a0b838383612cbd565b612abe575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a7f57806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612a7691906131d0565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612ab592919061423d565b60405180910390fd5b505050565b612acd8383612d7d565b612ad95f8484846124b1565b505050565b5f808290505f5b8451811015612b2157612b1282868381518110612b0557612b04613e5f565b5b6020026020010151612e70565b91508080600101915050612ae5565b508091505092915050565b5f8073ffffffffffffffffffffffffffffffffffffffff16612b4d83612808565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612bc8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612bbe57612bbd61409d565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612c05576d04ee2d6d415b85acef81000000008381612bfb57612bfa61409d565b5b0492506020810190505b662386f26fc100008310612c3457662386f26fc100008381612c2a57612c2961409d565b5b0492506010810190505b6305f5e1008310612c5d576305f5e1008381612c5357612c5261409d565b5b0492506008810190505b6127108310612c82576127108381612c7857612c7761409d565b5b0492506004810190505b60648310612ca55760648381612c9b57612c9a61409d565b5b0492506002810190505b600a8310612cb4576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d7457508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612d355750612d34848461193f565b5b80612d7357508273ffffffffffffffffffffffffffffffffffffffff16612d5b83611dfc565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ded575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612de491906132c2565b60405180910390fd5b5f612df983835f611e4e565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612e6b575f6040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401612e6291906132c2565b60405180910390fd5b505050565b5f818310612e8757612e828284612e9a565b612e92565b612e918383612e9a565b5b905092915050565b5f825f528160205260405f20905092915050565b8260038101928215612edd579160200282015b82811115612edc578251825591602001919060010190612ec1565b5b509050612eea9190612eee565b5090565b5b80821115612f05575f815f905550600101612eef565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612f2c81612f1a565b8114612f36575f80fd5b50565b5f81359050612f4781612f23565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f9b82612f55565b810181811067ffffffffffffffff82111715612fba57612fb9612f65565b5b80604052505050565b5f612fcc612f09565b9050612fd88282612f92565b919050565b5f67ffffffffffffffff821115612ff757612ff6612f65565b5b61300082612f55565b9050602081019050919050565b828183375f83830152505050565b5f61302d61302884612fdd565b612fc3565b90508281526020810184848401111561304957613048612f51565b5b61305484828561300d565b509392505050565b5f82601f8301126130705761306f612f4d565b5b813561308084826020860161301b565b91505092915050565b5f806040838503121561309f5761309e612f12565b5b5f6130ac85828601612f39565b925050602083013567ffffffffffffffff8111156130cd576130cc612f16565b5b6130d98582860161305c565b9150509250929050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613117816130e3565b8114613121575f80fd5b50565b5f813590506131328161310e565b92915050565b5f6020828403121561314d5761314c612f12565b5b5f61315a84828501613124565b91505092915050565b5f8115159050919050565b61317781613163565b82525050565b5f6020820190506131905f83018461316e565b92915050565b5f602082840312156131ab576131aa612f12565b5b5f6131b884828501612f39565b91505092915050565b6131ca81612f1a565b82525050565b5f6020820190506131e35f8301846131c1565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613220578082015181840152602081019050613205565b5f8484015250505050565b5f613235826131e9565b61323f81856131f3565b935061324f818560208601613203565b61325881612f55565b840191505092915050565b5f6020820190508181035f83015261327b818461322b565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6132ac82613283565b9050919050565b6132bc816132a2565b82525050565b5f6020820190506132d55f8301846132b3565b92915050565b6132e4816132a2565b81146132ee575f80fd5b50565b5f813590506132ff816132db565b92915050565b5f806040838503121561331b5761331a612f12565b5b5f613328858286016132f1565b925050602061333985828601612f39565b9150509250929050565b5f805f6060848603121561335a57613359612f12565b5b5f613367868287016132f1565b9350506020613378868287016132f1565b925050604061338986828701612f39565b9150509250925092565b5f67ffffffffffffffff8211156133ad576133ac612f65565b5b602082029050919050565b5f80fd5b5f819050919050565b6133ce816133bc565b81146133d8575f80fd5b50565b5f813590506133e9816133c5565b92915050565b5f6134016133fc84613393565b612fc3565b9050806020840283018581111561341b5761341a6133b8565b5b835b81811015613444578061343088826133db565b84526020840193505060208101905061341d565b5050509392505050565b5f82601f83011261346257613461612f4d565b5b600361346f8482856133ef565b91505092915050565b5f6060828403121561348d5761348c612f12565b5b5f61349a8482850161344e565b91505092915050565b5f67ffffffffffffffff8211156134bd576134bc612f65565b5b602082029050602081019050919050565b5f6134e06134db846134a3565b612fc3565b90508083825260208201905060208402830185811115613503576135026133b8565b5b835b8181101561352c578061351888826133db565b845260208401935050602081019050613505565b5050509392505050565b5f82601f83011261354a57613549612f4d565b5b813561355a8482602086016134ce565b91505092915050565b5f6020828403121561357857613577612f12565b5b5f82013567ffffffffffffffff81111561359557613594612f16565b5b6135a184828501613536565b91505092915050565b6135b3816133bc565b82525050565b5f6020820190506135cc5f8301846135aa565b92915050565b5f602082840312156135e7576135e6612f12565b5b5f6135f4848285016132f1565b91505092915050565b5f6020828403121561361257613611612f12565b5b5f82013567ffffffffffffffff81111561362f5761362e612f16565b5b61363b8482850161305c565b91505092915050565b5f805f6060848603121561365b5761365a612f12565b5b5f84013567ffffffffffffffff81111561367857613677612f16565b5b61368486828701613536565b9350506020613695868287016133db565b92505060406136a686828701612f39565b9150509250925092565b6136b981613163565b81146136c3575f80fd5b50565b5f813590506136d4816136b0565b92915050565b5f80604083850312156136f0576136ef612f12565b5b5f6136fd858286016132f1565b925050602061370e858286016136c6565b9150509250929050565b5f67ffffffffffffffff82111561373257613731612f65565b5b61373b82612f55565b9050602081019050919050565b5f61375a61375584613718565b612fc3565b90508281526020810184848401111561377657613775612f51565b5b61378184828561300d565b509392505050565b5f82601f83011261379d5761379c612f4d565b5b81356137ad848260208601613748565b91505092915050565b5f805f80608085870312156137ce576137cd612f12565b5b5f6137db878288016132f1565b94505060206137ec878288016132f1565b93505060406137fd87828801612f39565b925050606085013567ffffffffffffffff81111561381e5761381d612f16565b5b61382a87828801613789565b91505092959194509250565b5f806040838503121561384c5761384b612f12565b5b5f613859858286016132f1565b925050602061386a858286016132f1565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806138b857607f821691505b6020821081036138cb576138ca613874565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261392d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826138f2565b61393786836138f2565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61397261396d61396884612f1a565b61394f565b612f1a565b9050919050565b5f819050919050565b61398b83613958565b61399f61399782613979565b8484546138fe565b825550505050565b5f90565b6139b36139a7565b6139be818484613982565b505050565b5b818110156139e1576139d65f826139ab565b6001810190506139c4565b5050565b601f821115613a26576139f7816138d1565b613a00846138e3565b81016020851015613a0f578190505b613a23613a1b856138e3565b8301826139c3565b50505b505050565b5f82821c905092915050565b5f613a465f1984600802613a2b565b1980831691505092915050565b5f613a5e8383613a37565b9150826002028217905092915050565b613a77826131e9565b67ffffffffffffffff811115613a9057613a8f612f65565b5b613a9a82546138a1565b613aa58282856139e5565b5f60209050601f831160018114613ad6575f8415613ac4578287015190505b613ace8582613a53565b865550613b35565b601f198416613ae4866138d1565b5f5b82811015613b0b57848901518255600182019150602085019450602081019050613ae6565b86831015613b285784890151613b24601f891682613a37565b8355505b6001600288020188555050505b505050505050565b5f61ffff82169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b8182613b3d565b9150613b8c83613b3d565b9250828201905061ffff811115613ba657613ba5613b4a565b5b92915050565b5f606082019050613bbf5f8301866132b3565b613bcc60208301856131c1565b613bd960408301846132b3565b949350505050565b7f53616c65206973206e6f742061637469766500000000000000000000000000005f82015250565b5f613c156012836131f3565b9150613c2082613be1565b602082019050919050565b5f6020820190508181035f830152613c4281613c09565b9050919050565b5f8160601b9050919050565b5f613c5f82613c49565b9050919050565b5f613c7082613c55565b9050919050565b613c88613c83826132a2565b613c66565b82525050565b5f613c998284613c77565b60148201915081905092915050565b7f4e6f7420612070617274206f66205469657220330000000000000000000000005f82015250565b5f613cdc6014836131f3565b9150613ce782613ca8565b602082019050919050565b5f6020820190508181035f830152613d0981613cd0565b9050919050565b7f4578636565646564206d6178206c696d6974206f6620616c6c6f77656420746f5f8201527f6b656e206d696e74730000000000000000000000000000000000000000000000602082015250565b5f613d6a6029836131f3565b9150613d7582613d10565b604082019050919050565b5f6020820190508181035f830152613d9781613d5e565b9050919050565b5f613da882612f1a565b9150613db383612f1a565b9250828201905080821115613dcb57613dca613b4a565b5b92915050565b7f4d6178206e756d626572206f66206d696e7473207065722061646472657373205f8201527f7265616368656400000000000000000000000000000000000000000000000000602082015250565b5f613e2b6027836131f3565b9150613e3682613dd1565b604082019050919050565b5f6020820190508181035f830152613e5881613e1f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f7420612070617274206f66205469657220310000000000000000000000005f82015250565b5f613ec06014836131f3565b9150613ecb82613e8c565b602082019050919050565b5f6020820190508181035f830152613eed81613eb4565b9050919050565b5f81905092915050565b5f613f08826131e9565b613f128185613ef4565b9350613f22818560208601613203565b80840191505092915050565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000005f82015250565b5f613f62600583613ef4565b9150613f6d82613f2e565b600582019050919050565b5f613f838285613efe565b9150613f8f8284613efe565b9150613f9a82613f56565b91508190509392505050565b7f4e6f7420612070617274206f66205469657220300000000000000000000000005f82015250565b5f613fda6014836131f3565b9150613fe582613fa6565b602082019050919050565b5f6020820190508181035f83015261400781613fce565b9050919050565b5f61401882612f1a565b915061402383612f1a565b925082820390508181111561403b5761403a613b4a565b5b92915050565b5f819050919050565b61405b61405682612f1a565b614041565b82525050565b5f61406c828661404a565b60208201915061407c828561404a565b60208201915061408c8284613c77565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140d482612f1a565b91506140df83612f1a565b9250826140ef576140ee61409d565b5b828206905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f61411e826140fa565b6141288185614104565b9350614138818560208601613203565b61414181612f55565b840191505092915050565b5f60808201905061415f5f8301876132b3565b61416c60208301866132b3565b61417960408301856131c1565b818103606083015261418b8184614114565b905095945050505050565b5f815190506141a48161310e565b92915050565b5f602082840312156141bf576141be612f12565b5b5f6141cc84828501614196565b91505092915050565b7f4552433732313a20696e76616c696420746f6b656e20494400000000000000005f82015250565b5f6142096018836131f3565b9150614214826141d5565b602082019050919050565b5f6020820190508181035f830152614236816141fd565b9050919050565b5f6040820190506142505f8301856132b3565b61425d60208301846131c1565b939250505056fea2646970667358221220cdbec5e095e198ae997eec22741e44e5b758c003685f661d9176646182f76f1e64736f6c63430008170033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000084e6176795365616c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084e6176795365616c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043697066733a2f2f626166796265696367636f6a776569767a69357179326437776e746977757277706a737473327669636a626965333374646f796d716a6a6c6465752f0000000000000000000000000000000000000000000000000000000000