6080604052600f60065560146007555f6008555f600955600f600a556021600b55602d600c555f600d555f600e556009600a61003b919061059a565b630ee6b28061004a91906105e4565b600f556009600a61005b919061059a565b630ee6b28061006a91906105e4565b6010556009600a61007b919061059a565b6302faf08061008a91906105e4565b6011556009600a61009b919061059a565b6302faf0806100aa91906105e4565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f6016555f6100f86103fb60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073b21de9d4f718a999f5130ee704c31dc0c6ab442060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6101f6919061059a565b6402540be40061020691906105e4565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61025a61040260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6103d1919061059a565b6402540be4006103e191906105e4565b6040516103ee9190610634565b60405180910390a361064d565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104ab5780860481111561048757610486610429565b5b60018516156104965780820291505b80810290506104a485610456565b945061046b565b94509492505050565b5f826104c3576001905061057e565b816104d0575f905061057e565b81600181146104e657600281146104f05761051f565b600191505061057e565b60ff84111561050257610501610429565b5b8360020a91508482111561051957610518610429565b5b5061057e565b5060208310610133831016604e8410600b84101617156105545782820a90508381111561054f5761054e610429565b5b61057e565b6105618484846001610462565b9250905081840481111561057857610577610429565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105a482610585565b91506105af8361058e565b92506105dc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104b4565b905092915050565b5f6105ee82610585565b91506105f983610585565b925082820261060781610585565b9150828204841483151761061e5761061d610429565b5b5092915050565b61062e81610585565b82525050565b5f6020820190506106475f830184610625565b92915050565b6139b18061065a5f395ff3fe608060405260043610610184575f3560e01c806370a08231116100d05780638f9a55c011610089578063a9059cbb11610063578063a9059cbb146104e1578063bf474bed1461051d578063d34628cc14610547578063dd62ed3e1461056f5761018b565b80638f9a55c01461047757806395d89b41146104a157806399693201146104cb5761018b565b806370a0823114610393578063715018a6146103cf5780637d1db4a5146103e557806388729c3f1461040f5780638a8c523c146104375780638da5cb5b1461044d5761018b565b8063313ce5671161013d5780634161f055116101175780634161f0551461033b5780634906d89e146103515780634f387fff1461036757806358dbe8211461037d5761018b565b8063313ce567146102ad57806331c2d847146102d75780633bbac579146102ff5761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f557806318160ddd1461021f57806319bebf1e1461024957806323b872dd146102715761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105ab565b6040516101b09190612874565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612932565b6105e8565b6040516101ec919061298a565b60405180910390f35b348015610200575f80fd5b50610209610605565b60405161021691906129b2565b60405180910390f35b34801561022a575f80fd5b5061023361060b565b60405161024091906129b2565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906129cb565b61062f565b005b34801561027c575f80fd5b50610297600480360381019061029291906129f6565b610775565b6040516102a4919061298a565b60405180910390f35b3480156102b8575f80fd5b506102c1610849565b6040516102ce9190612a61565b60405180910390f35b3480156102e2575f80fd5b506102fd60048036038101906102f89190612bba565b610851565b005b34801561030a575f80fd5b5061032560048036038101906103209190612c01565b61096f565b604051610332919061298a565b60405180910390f35b348015610346575f80fd5b5061034f6109c1565b005b34801561035c575f80fd5b50610365610a9b565b005b348015610372575f80fd5b5061037b610b76565b005b348015610388575f80fd5b50610391610ca8565b005b34801561039e575f80fd5b506103b960048036038101906103b49190612c01565b610d57565b6040516103c691906129b2565b60405180910390f35b3480156103da575f80fd5b506103e3610d9d565b005b3480156103f0575f80fd5b506103f9610eeb565b60405161040691906129b2565b60405180910390f35b34801561041a575f80fd5b50610435600480360381019061043091906129cb565b610ef1565b005b348015610442575f80fd5b5061044b610f7d565b005b348015610458575f80fd5b5061046161149d565b60405161046e9190612c3b565b60405180910390f35b348015610482575f80fd5b5061048b6114c4565b60405161049891906129b2565b60405180910390f35b3480156104ac575f80fd5b506104b56114ca565b6040516104c29190612874565b60405180910390f35b3480156104d6575f80fd5b506104df611507565b005b3480156104ec575f80fd5b5061050760048036038101906105029190612932565b6115db565b604051610514919061298a565b60405180910390f35b348015610528575f80fd5b506105316115f8565b60405161053e91906129b2565b60405180910390f35b348015610552575f80fd5b5061056d60048036038101906105689190612bba565b6115fe565b005b34801561057a575f80fd5b5061059560048036038101906105909190612c54565b61171d565b6040516105a291906129b2565b60405180910390f35b60606040518060400160405280600d81526020017f446f6720576966204170706c6500000000000000000000000000000000000000815250905090565b5f6105fb6105f461179f565b84846117a6565b6001905092915050565b60125481565b5f6009600a61061a9190612dee565b6402540be40061062a9190612e38565b905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661066f61179f565b73ffffffffffffffffffffffffffffffffffffffff16146106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bc90612ec3565b60405180910390fd5b5f811180156106d5575060648111155b610714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070b90612f2b565b60405180910390fd5b5f61071e30610d57565b90505f6064838361072f9190612e38565b6107399190612f76565b90505f8111156107705761076f3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b505050565b5f610781848484611969565b61083e8461078d61179f565b610839856040518060600160405280602881526020016139546028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107f061179f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f09092919063ffffffff16565b6117a6565b600190509392505050565b5f6009905090565b61085961179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc90612ff0565b60405180910390fd5b5f5b815181101561096b575f60045f8484815181106109075761090661300e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108e7565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a0161179f565b73ffffffffffffffffffffffffffffffffffffffff1614610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e90612ec3565b60405180910390fd5b5f610a6130610d57565b90505f811115610a9857610a973060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b50565b610aa361179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690612ff0565b60405180910390fd5b5f6006819055505f6007819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f604051610b6c919061307d565b60405180910390a1565b610b7e61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0190612ff0565b60405180910390fd5b6009600a610c189190612dee565b6402540be400610c289190612e38565b600f819055506009600a610c3c9190612dee565b6402540be400610c4c9190612e38565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610c819190612dee565b6402540be400610c919190612e38565b604051610c9e91906129b2565b60405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ce861179f565b73ffffffffffffffffffffffffffffffffffffffff1614610d07575f80fd5b5f610d1130610d57565b90505f81118015610d2e5750601460169054906101000a900460ff165b15610d3d57610d3c81612352565b5b5f4790505f811115610d5357610d52816125bd565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610da561179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2890612ff0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3161179f565b73ffffffffffffffffffffffffffffffffffffffff1614610f50575f80fd5b6008548111158015610f6457506009548111155b610f6c575f80fd5b806008819055508060098190555050565b610f8561179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100890612ff0565b60405180910390fd5b60148054906101000a900460ff161561105f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611056906130e0565b60405180910390fd5b73ee567fe1712faf6149d80da1e6934e354124cfe360135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110fc3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110e79190612dee565b6402540be4006110f79190612e38565b6117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611166573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118a9190613112565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611210573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112349190613112565b6040518363ffffffff1660e01b815260040161125192919061313d565b6020604051808303815f875af115801561126d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112919190613112565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061131830610d57565b5f8061132261149d565b426040518863ffffffff1660e01b815260040161134496959493929190613164565b60606040518083038185885af1158015611360573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061138591906131d7565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611425929190613227565b6020604051808303815f875af1158015611441573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114659190613278565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f41444f4700000000000000000000000000000000000000000000000000000000815250905090565b61150f61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290612ff0565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516115d1919061307d565b60405180910390a1565b5f6115ee6115e761179f565b8484611969565b6001905092915050565b60115481565b61160661179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990612ff0565b60405180910390fd5b5f5b815181101561171957600160045f8484815181106116b5576116b461300e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611694565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613313565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906133a1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161195c91906129b2565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce9061342f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c906134bd565b60405180910390fd5b5f8111611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9061354b565b60405180910390fd5b5f611a9061149d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611afe5750611ace61149d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120405760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ba1575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611ba9575f80fd5b5f600e5403611bf157611bee6064611be0600a54600e5411611bcd57600654611bd1565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f600e541115611c2657611c236064611c15600d548561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ccf575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d22575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e1a57600f54821115611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d63906135b3565b60405180910390fd5b60105482611d7985610d57565b611d8391906135d1565b1115611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb9061364e565b60405180910390fd5b611e006064611df2600a54600e5411611ddf57600654611de3565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b9050600e5f815480929190611e149061366c565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ea257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee657611ee36064611ed5600b54600e5411611ec257600754611ec6565b6009545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f611ef030610d57565b9050601460159054906101000a900460ff16158015611f5b575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f735750601460169054906101000a900460ff165b8015611f80575060115481115b8015611f8f5750600c54600e54115b1561203e57601654431115611fa6575f6015819055505b600360155410611feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe2906136fd565b60405180910390fd5b61200861200384611ffe846012546126e5565b6126e5565b612352565b5f4790505f81111561201e5761201d476125bd565b5b60155f8154809291906120309061366c565b919050555043601681905550505b505b5f81111561213f576120988160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161213691906129b2565b60405180910390a35b61218f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122326121e6828461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6122d5848661275a90919063ffffffff16565b6040516122e291906129b2565b60405180910390a350505050565b5f838311158290612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e9190612874565b60405180910390fd5b505f8385612345919061371b565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561238957612388612a7e565b5b6040519080825280602002602001820160405280156123b75781602001602082028036833780820191505090505b50905030815f815181106123ce576123cd61300e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124969190613112565b816001815181106124aa576124a961300e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125103060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612572959493929190613805565b5f604051808303815f87803b158015612589575f80fd5b505af115801561259b573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612621573d5f803e3d5ffd5b5050565b5f808303612635575f9050612696565b5f82846126429190612e38565b90508284826126519190612f76565b14612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906138cd565b60405180910390fd5b809150505b92915050565b5f6126dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127a3565b905092915050565b5f8183116126f357826126f5565b815b905092915050565b5f80828461270b91906135d1565b905083811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613935565b60405180910390fd5b8091505092915050565b5f61279b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122f0565b905092915050565b5f80831182906127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e09190612874565b60405180910390fd5b505f83856127f79190612f76565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61284682612804565b612850818561280e565b935061286081856020860161281e565b6128698161282c565b840191505092915050565b5f6020820190508181035f83015261288c818461283c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ce826128a5565b9050919050565b6128de816128c4565b81146128e8575f80fd5b50565b5f813590506128f9816128d5565b92915050565b5f819050919050565b612911816128ff565b811461291b575f80fd5b50565b5f8135905061292c81612908565b92915050565b5f80604083850312156129485761294761289d565b5b5f612955858286016128eb565b92505060206129668582860161291e565b9150509250929050565b5f8115159050919050565b61298481612970565b82525050565b5f60208201905061299d5f83018461297b565b92915050565b6129ac816128ff565b82525050565b5f6020820190506129c55f8301846129a3565b92915050565b5f602082840312156129e0576129df61289d565b5b5f6129ed8482850161291e565b91505092915050565b5f805f60608486031215612a0d57612a0c61289d565b5b5f612a1a868287016128eb565b9350506020612a2b868287016128eb565b9250506040612a3c8682870161291e565b9150509250925092565b5f60ff82169050919050565b612a5b81612a46565b82525050565b5f602082019050612a745f830184612a52565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ab48261282c565b810181811067ffffffffffffffff82111715612ad357612ad2612a7e565b5b80604052505050565b5f612ae5612894565b9050612af18282612aab565b919050565b5f67ffffffffffffffff821115612b1057612b0f612a7e565b5b602082029050602081019050919050565b5f80fd5b5f612b37612b3284612af6565b612adc565b90508083825260208201905060208402830185811115612b5a57612b59612b21565b5b835b81811015612b835780612b6f88826128eb565b845260208401935050602081019050612b5c565b5050509392505050565b5f82601f830112612ba157612ba0612a7a565b5b8135612bb1848260208601612b25565b91505092915050565b5f60208284031215612bcf57612bce61289d565b5b5f82013567ffffffffffffffff811115612bec57612beb6128a1565b5b612bf884828501612b8d565b91505092915050565b5f60208284031215612c1657612c1561289d565b5b5f612c23848285016128eb565b91505092915050565b612c35816128c4565b82525050565b5f602082019050612c4e5f830184612c2c565b92915050565b5f8060408385031215612c6a57612c6961289d565b5b5f612c77858286016128eb565b9250506020612c88858286016128eb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d1457808604811115612cf057612cef612c92565b5b6001851615612cff5780820291505b8081029050612d0d85612cbf565b9450612cd4565b94509492505050565b5f82612d2c5760019050612de7565b81612d39575f9050612de7565b8160018114612d4f5760028114612d5957612d88565b6001915050612de7565b60ff841115612d6b57612d6a612c92565b5b8360020a915084821115612d8257612d81612c92565b5b50612de7565b5060208310610133831016604e8410600b8410161715612dbd5782820a905083811115612db857612db7612c92565b5b612de7565b612dca8484846001612ccb565b92509050818404811115612de157612de0612c92565b5b81810290505b9392505050565b5f612df8826128ff565b9150612e0383612a46565b9250612e307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d1d565b905092915050565b5f612e42826128ff565b9150612e4d836128ff565b9250828202612e5b816128ff565b91508282048414831517612e7257612e71612c92565b5b5092915050565b7f43616c6c6572206973206e6f7420746865207461782077616c6c6574000000005f82015250565b5f612ead601c8361280e565b9150612eb882612e79565b602082019050919050565b5f6020820190508181035f830152612eda81612ea1565b9050919050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f612f1560128361280e565b9150612f2082612ee1565b602082019050919050565b5f6020820190508181035f830152612f4281612f09565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f80826128ff565b9150612f8b836128ff565b925082612f9b57612f9a612f49565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612fda60208361280e565b9150612fe582612fa6565b602082019050919050565b5f6020820190508181035f83015261300781612fce565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f61306761306261305d8461303b565b613044565b6128ff565b9050919050565b6130778161304d565b82525050565b5f6020820190506130905f83018461306e565b92915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130ca60178361280e565b91506130d582613096565b602082019050919050565b5f6020820190508181035f8301526130f7816130be565b9050919050565b5f8151905061310c816128d5565b92915050565b5f602082840312156131275761312661289d565b5b5f613134848285016130fe565b91505092915050565b5f6040820190506131505f830185612c2c565b61315d6020830184612c2c565b9392505050565b5f60c0820190506131775f830189612c2c565b61318460208301886129a3565b613191604083018761306e565b61319e606083018661306e565b6131ab6080830185612c2c565b6131b860a08301846129a3565b979650505050505050565b5f815190506131d181612908565b92915050565b5f805f606084860312156131ee576131ed61289d565b5b5f6131fb868287016131c3565b935050602061320c868287016131c3565b925050604061321d868287016131c3565b9150509250925092565b5f60408201905061323a5f830185612c2c565b61324760208301846129a3565b9392505050565b61325781612970565b8114613261575f80fd5b50565b5f815190506132728161324e565b92915050565b5f6020828403121561328d5761328c61289d565b5b5f61329a84828501613264565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132fd60248361280e565b9150613308826132a3565b604082019050919050565b5f6020820190508181035f83015261332a816132f1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61338b60228361280e565b915061339682613331565b604082019050919050565b5f6020820190508181035f8301526133b88161337f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61341960258361280e565b9150613424826133bf565b604082019050919050565b5f6020820190508181035f8301526134468161340d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a760238361280e565b91506134b28261344d565b604082019050919050565b5f6020820190508181035f8301526134d48161349b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61353560298361280e565b9150613540826134db565b604082019050919050565b5f6020820190508181035f83015261356281613529565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61359d60198361280e565b91506135a882613569565b602082019050919050565b5f6020820190508181035f8301526135ca81613591565b9050919050565b5f6135db826128ff565b91506135e6836128ff565b92508282019050808211156135fe576135fd612c92565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613638601a8361280e565b915061364382613604565b602082019050919050565b5f6020820190508181035f8301526136658161362c565b9050919050565b5f613676826128ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a8576136a7612c92565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6136e760178361280e565b91506136f2826136b3565b602082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b5f613725826128ff565b9150613730836128ff565b925082820390508181111561374857613747612c92565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613780816128c4565b82525050565b5f6137918383613777565b60208301905092915050565b5f602082019050919050565b5f6137b38261374e565b6137bd8185613758565b93506137c883613768565b805f5b838110156137f85781516137df8882613786565b97506137ea8361379d565b9250506001810190506137cb565b5085935050505092915050565b5f60a0820190506138185f8301886129a3565b613825602083018761306e565b818103604083015261383781866137a9565b90506138466060830185612c2c565b61385360808301846129a3565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138b760218361280e565b91506138c28261385d565b604082019050919050565b5f6020820190508181035f8301526138e4816138ab565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61391f601b8361280e565b915061392a826138eb565b602082019050919050565b5f6020820190508181035f83015261394c81613913565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f6748e6f8a8a27f6d1ace17c371f3f36776659d23a4eadde58a6ad04f618f57864736f6c634300081a0033