6080604052348015600e575f5ffd5b50613d008061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610170575f3560e01c8063715018a6116100dc578063bdb6665311610095578063e985e9c51161006f578063e985e9c51461040c578063f242432a1461043c578063f2fde38b14610458578063f43bea061461047457610170565b8063bdb66653146103a4578063c4d66de8146103c0578063c87b56dd146103dc57610170565b8063715018a61461030a578063862440e2146103145780638da5cb5b1461033057806395d89b411461034e578063a22cb4651461036c578063bd0b0d161461038857610170565b80632c4e591b1161012e5780632c4e591b1461025a5780632eb2c2d6146102785780634e1273f4146102945780635c975abb146102c45780635d1439bb146102e257806363b0e66a146102ec57610170565b8062fdd58e1461017457806301ffc9a7146101a457806306fdde03146101d45780630e89341c146101f257806316c38b3c1461022257806323cf0a221461023e575b5f5ffd5b61018e600480360381019061018991906126d0565b610490565b60405161019b919061271d565b60405180910390f35b6101be60048036038101906101b9919061278b565b6104f3565b6040516101cb91906127d0565b60405180910390f35b6101dc6105d4565b6040516101e99190612859565b60405180910390f35b61020c60048036038101906102079190612879565b610660565b6040516102199190612859565b60405180910390f35b61023c600480360381019061023791906128ce565b610700565b005b61025860048036038101906102539190612930565b610724565b005b610262610828565b60405161026f919061271d565b60405180910390f35b610292600480360381019061028d9190612b4b565b61082e565b005b6102ae60048036038101906102a99190612cd6565b6108ea565b6040516102bb9190612e03565b60405180910390f35b6102cc6109f4565b6040516102d991906127d0565b60405180910390f35b6102ea610a06565b005b6102f4610afb565b6040516103019190612e7e565b60405180910390f35b610312610b1f565b005b61032e60048036038101906103299190612f35565b610b32565b005b610338610b9a565b6040516103459190612f9e565b60405180910390f35b610356610bcf565b6040516103639190612859565b60405180910390f35b61038660048036038101906103819190612fb7565b610c5b565b005b6103a2600480360381019061039d9190612ff5565b610c71565b005b6103be60048036038101906103b99190613020565b610dbc565b005b6103da60048036038101906103d59190612ff5565b610e41565b005b6103f660048036038101906103f19190612879565b61114e565b6040516104039190612859565b60405180910390f35b61042660048036038101906104219190613067565b6111e9565b60405161043391906127d0565b60405180910390f35b610456600480360381019061045191906130a5565b611285565b005b610472600480360381019061046d9190612ff5565b611341565b005b61048e60048036038101906104899190613138565b6113c5565b005b5f5f61049a611490565b9050805f015f8481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105bd57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105cd57506105cc826114b7565b5b9050919050565b600180546105e1906131d1565b80601f016020809104026020016040519081016040528092919081815260200182805461060d906131d1565b80156106585780601f1061062f57610100808354040283529160200191610658565b820191905f5260205f20905b81548152906001019060200180831161063b57829003601f168201915b505050505081565b60605f61066b611490565b905080600201805461067c906131d1565b80601f01602080910402602001604051908101604052809291908181526020018280546106a8906131d1565b80156106f35780601f106106ca576101008083540402835291602001916106f3565b820191905f5260205f20905b8154815290600101906020018083116106d657829003601f168201915b5050505050915050919050565b610708611520565b8060035f6101000a81548160ff02191690831515021790555050565b8061ffff1660035f9054906101000a900460ff1615610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f9061324b565b60405180910390fd5b5f81036107ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b1906132b3565b60405180910390fd5b5f6107c53383610490565b14610805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fc90613341565b60405180910390fd5b610824338361ffff16600160405180602001604052805f8152506115a7565b5050565b60045481565b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561089657505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156108d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cd906133f5565b60405180910390fd5b6108e3858585858561163c565b5050505050565b6060815183511461093657815183516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161092d929190613413565b60405180910390fd5b5f835167ffffffffffffffff8111156109525761095161295f565b5b6040519080825280602002602001820160405280156109805781602001602082028036833780820191505090505b5090505f5f90505b84518110156109e9576109bf6109a7828761173090919063ffffffff16565b6109ba838761174390919063ffffffff16565b610490565b8282815181106109d2576109d161343a565b5b602002602001018181525050806001019050610988565b508091505092915050565b60035f9054906101000a900460ff1681565b6001610a21336103e8600454610a1c9190613494565b610490565b10610a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5890613537565b60405180910390fd5b5f600190505b6004548111610ace575f610a7b3383610490565b11610abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab2906135c5565b60405180910390fd5b8080610ac6906135e3565b915050610a67565b50610af9336103e8600454610ae39190613494565b600160405180602001604052805f8152506115a7565b565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b27611520565b610b305f611756565b565b610b3a611520565b5f8190508060055f8581526020019081526020015f209081610b5c91906137c1565b50827f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b82604051610b8d9190612859565b60405180910390a2505050565b5f5f610ba4611827565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b60028054610bdc906131d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610c08906131d1565b8015610c535780601f10610c2a57610100808354040283529160200191610c53565b820191905f5260205f20905b815481529060010190602001808311610c3657829003601f168201915b505050505081565b610c6d610c6661184e565b8383611855565b5050565b610c79611520565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde906138da565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b11db0396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db3919061390c565b60048190555050565b610dc4611520565b5f8190508060055f6103e8600454610ddc9190613494565b81526020019081526020015f209081610df591906137c1565b506103e8600454610e069190613494565b7f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b82604051610e359190612859565b60405180910390a25050565b5f610e4a6119cc565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff16148015610e925750825b90505f60018367ffffffffffffffff16148015610ec557505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610ed3575080155b15610f0a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610f57576001855f0160086101000a81548160ff0219169083151502179055505b610f6e60405180602001604052805f8152506119f3565b610f7733611a07565b5f60035f6101000a81548160ff0219169083151502179055506040518060400160405280600d81526020017f536f6c696469747951756573740000000000000000000000000000000000000081525060019081610fd491906137c1565b506040518060400160405280600381526020017f51535400000000000000000000000000000000000000000000000000000000008152506002908161101991906137c1565b50855f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b11db0396040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e6919061390c565b6004819055508315611146575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161113d9190613983565b60405180910390a15b505050505050565b6005602052805f5260405f205f91509050805461116a906131d1565b80601f0160208091040260200160405190810160405280929190818152602001828054611196906131d1565b80156111e15780601f106111b8576101008083540402835291602001916111e1565b820191905f5260205f20905b8154815290600101906020018083116111c457829003601f168201915b505050505081565b5f5f6111f3611490565b9050806001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156112ed57505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561132d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611324906133f5565b60405180910390fd5b61133a8585858585611a1b565b5050505050565b611349611520565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113b9575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016113b09190612f9e565b60405180910390fd5b6113c281611756565b50565b6113cd611520565b5f83836113da919061399c565b90505f5f90505b81811015611489575f836113f487611b21565b604051602001611405929190613a9d565b60405160208183030381529060405290508060055f8881526020019081526020015f20908161143491906137c1565b50857f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b826040516114659190612859565b60405180910390a28580611478906135e3565b9650505080806001019150506113e1565b5050505050565b5f7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61152861184e565b73ffffffffffffffffffffffffffffffffffffffff16611546610b9a565b73ffffffffffffffffffffffffffffffffffffffff16146115a55761156961184e565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161159c9190612f9e565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611617575f6040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161160e9190612f9e565b60405180910390fd5b5f5f6116238585611beb565b915091506116345f87848487611c1b565b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116ac575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016116a39190612f9e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361171c575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016117139190612f9e565b60405180910390fd5b6117298585858585611c1b565b5050505050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f61175f611827565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f33905090565b5f61185e611490565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d0575f6040517fced3e1000000000000000000000000000000000000000000000000000000000081526004016118c79190612f9e565b60405180910390fd5b81816001015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31846040516119be91906127d0565b60405180910390a350505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6119fb611cc7565b611a0481611d07565b50565b611a0f611cc7565b611a1881611d1b565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a8b575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611a829190612f9e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611afb575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611af29190612f9e565b60405180910390fd5b5f5f611b078585611beb565b91509150611b188787848487611c1b565b50505050505050565b60605f6001611b2f84611d9f565b0190505f8167ffffffffffffffff811115611b4d57611b4c61295f565b5b6040519080825280601f01601f191660200182016040528015611b7f5781602001600182028036833780820191505090505b5090505f82602001820190505b600115611be0578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611bd557611bd4613ad6565b5b0494505f8503611b8c575b819350505050919050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b611c2785858585611ef0565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611cc0575f611c6361184e565b90506001845103611caf575f611c825f8661174390919063ffffffff16565b90505f611c985f8661174390919063ffffffff16565b9050611ca8838989858589612295565b5050611cbe565b611cbd818787878787612444565b5b505b5050505050565b611ccf6125f3565b611d05576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611d0f611cc7565b611d1881612611565b50565b611d23611cc7565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d93575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611d8a9190612f9e565b60405180910390fd5b611d9c81611756565b50565b5f5f5f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611dfb577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611df157611df0613ad6565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611e38576d04ee2d6d415b85acef81000000008381611e2e57611e2d613ad6565b5b0492506020810190505b662386f26fc100008310611e6757662386f26fc100008381611e5d57611e5c613ad6565b5b0492506010810190505b6305f5e1008310611e90576305f5e1008381611e8657611e85613ad6565b5b0492506008810190505b6127108310611eb5576127108381611eab57611eaa613ad6565b5b0492506004810190505b60648310611ed85760648381611ece57611ecd613ad6565b5b0492506002810190505b600a8310611ee7576001810190505b80915050919050565b5f611ef9611490565b90508151835114611f4557825182516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401611f3c929190613413565b60405180910390fd5b5f611f4e61184e565b90505f5f90505b8451811015612153575f611f72828761174390919063ffffffff16565b90505f611f88838761174390919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146120af575f855f015f8481526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561205957898183856040517f03dee4c50000000000000000000000000000000000000000000000000000000081526004016120509493929190613b03565b60405180910390fd5b818103865f015f8581526020019081526020015f205f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146121465780855f015f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461213e9190613494565b925050819055505b5050806001019050611f55565b50600184510361220e575f6121715f8661174390919063ffffffff16565b90505f6121875f8661174390919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516121ff929190613413565b60405180910390a4505061228d565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612284929190613b46565b60405180910390a45b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111561243c578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016122f5959493929190613bcd565b6020604051808303815f875af192505050801561233057506040513d601f19601f8201168201806040525081019061232d9190613c39565b60015b6123b1573d805f811461235e576040519150601f19603f3d011682016040523d82523d5f602084013e612363565b606091505b505f8151036123a957846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016123a09190612f9e565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461243a57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016124319190612f9e565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b11156125eb578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016124a4959493929190613c64565b6020604051808303815f875af19250505080156124df57506040513d601f19601f820116820180604052508101906124dc9190613c39565b60015b612560573d805f811461250d576040519150601f19603f3d011682016040523d82523d5f602084013e612512565b606091505b505f81510361255857846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161254f9190612f9e565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146125e957846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016125e09190612f9e565b60405180910390fd5b505b505050505050565b5f6125fc6119cc565b5f0160089054906101000a900460ff16905090565b5f61261a611490565b90508181600201908161262d91906137c1565b505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61266c82612643565b9050919050565b61267c81612662565b8114612686575f5ffd5b50565b5f8135905061269781612673565b92915050565b5f819050919050565b6126af8161269d565b81146126b9575f5ffd5b50565b5f813590506126ca816126a6565b92915050565b5f5f604083850312156126e6576126e561263b565b5b5f6126f385828601612689565b9250506020612704858286016126bc565b9150509250929050565b6127178161269d565b82525050565b5f6020820190506127305f83018461270e565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61276a81612736565b8114612774575f5ffd5b50565b5f8135905061278581612761565b92915050565b5f602082840312156127a05761279f61263b565b5b5f6127ad84828501612777565b91505092915050565b5f8115159050919050565b6127ca816127b6565b82525050565b5f6020820190506127e35f8301846127c1565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61282b826127e9565b61283581856127f3565b9350612845818560208601612803565b61284e81612811565b840191505092915050565b5f6020820190508181035f8301526128718184612821565b905092915050565b5f6020828403121561288e5761288d61263b565b5b5f61289b848285016126bc565b91505092915050565b6128ad816127b6565b81146128b7575f5ffd5b50565b5f813590506128c8816128a4565b92915050565b5f602082840312156128e3576128e261263b565b5b5f6128f0848285016128ba565b91505092915050565b5f61ffff82169050919050565b61290f816128f9565b8114612919575f5ffd5b50565b5f8135905061292a81612906565b92915050565b5f602082840312156129455761294461263b565b5b5f6129528482850161291c565b91505092915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61299582612811565b810181811067ffffffffffffffff821117156129b4576129b361295f565b5b80604052505050565b5f6129c6612632565b90506129d2828261298c565b919050565b5f67ffffffffffffffff8211156129f1576129f061295f565b5b602082029050602081019050919050565b5f5ffd5b5f612a18612a13846129d7565b6129bd565b90508083825260208201905060208402830185811115612a3b57612a3a612a02565b5b835b81811015612a645780612a5088826126bc565b845260208401935050602081019050612a3d565b5050509392505050565b5f82601f830112612a8257612a8161295b565b5b8135612a92848260208601612a06565b91505092915050565b5f5ffd5b5f67ffffffffffffffff821115612ab957612ab861295f565b5b612ac282612811565b9050602081019050919050565b828183375f83830152505050565b5f612aef612aea84612a9f565b6129bd565b905082815260208101848484011115612b0b57612b0a612a9b565b5b612b16848285612acf565b509392505050565b5f82601f830112612b3257612b3161295b565b5b8135612b42848260208601612add565b91505092915050565b5f5f5f5f5f60a08688031215612b6457612b6361263b565b5b5f612b7188828901612689565b9550506020612b8288828901612689565b945050604086013567ffffffffffffffff811115612ba357612ba261263f565b5b612baf88828901612a6e565b935050606086013567ffffffffffffffff811115612bd057612bcf61263f565b5b612bdc88828901612a6e565b925050608086013567ffffffffffffffff811115612bfd57612bfc61263f565b5b612c0988828901612b1e565b9150509295509295909350565b5f67ffffffffffffffff821115612c3057612c2f61295f565b5b602082029050602081019050919050565b5f612c53612c4e84612c16565b6129bd565b90508083825260208201905060208402830185811115612c7657612c75612a02565b5b835b81811015612c9f5780612c8b8882612689565b845260208401935050602081019050612c78565b5050509392505050565b5f82601f830112612cbd57612cbc61295b565b5b8135612ccd848260208601612c41565b91505092915050565b5f5f60408385031215612cec57612ceb61263b565b5b5f83013567ffffffffffffffff811115612d0957612d0861263f565b5b612d1585828601612ca9565b925050602083013567ffffffffffffffff811115612d3657612d3561263f565b5b612d4285828601612a6e565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612d7e8161269d565b82525050565b5f612d8f8383612d75565b60208301905092915050565b5f602082019050919050565b5f612db182612d4c565b612dbb8185612d56565b9350612dc683612d66565b805f5b83811015612df6578151612ddd8882612d84565b9750612de883612d9b565b925050600181019050612dc9565b5085935050505092915050565b5f6020820190508181035f830152612e1b8184612da7565b905092915050565b5f819050919050565b5f612e46612e41612e3c84612643565b612e23565b612643565b9050919050565b5f612e5782612e2c565b9050919050565b5f612e6882612e4d565b9050919050565b612e7881612e5e565b82525050565b5f602082019050612e915f830184612e6f565b92915050565b5f67ffffffffffffffff821115612eb157612eb061295f565b5b612eba82612811565b9050602081019050919050565b5f612ed9612ed484612e97565b6129bd565b905082815260208101848484011115612ef557612ef4612a9b565b5b612f00848285612acf565b509392505050565b5f82601f830112612f1c57612f1b61295b565b5b8135612f2c848260208601612ec7565b91505092915050565b5f5f60408385031215612f4b57612f4a61263b565b5b5f612f58858286016126bc565b925050602083013567ffffffffffffffff811115612f7957612f7861263f565b5b612f8585828601612f08565b9150509250929050565b612f9881612662565b82525050565b5f602082019050612fb15f830184612f8f565b92915050565b5f5f60408385031215612fcd57612fcc61263b565b5b5f612fda85828601612689565b9250506020612feb858286016128ba565b9150509250929050565b5f6020828403121561300a5761300961263b565b5b5f61301784828501612689565b91505092915050565b5f602082840312156130355761303461263b565b5b5f82013567ffffffffffffffff8111156130525761305161263f565b5b61305e84828501612f08565b91505092915050565b5f5f6040838503121561307d5761307c61263b565b5b5f61308a85828601612689565b925050602061309b85828601612689565b9150509250929050565b5f5f5f5f5f60a086880312156130be576130bd61263b565b5b5f6130cb88828901612689565b95505060206130dc88828901612689565b94505060406130ed888289016126bc565b93505060606130fe888289016126bc565b925050608086013567ffffffffffffffff81111561311f5761311e61263f565b5b61312b88828901612b1e565b9150509295509295909350565b5f5f5f6060848603121561314f5761314e61263b565b5b5f61315c868287016126bc565b935050602061316d868287016126bc565b925050604084013567ffffffffffffffff81111561318e5761318d61263f565b5b61319a86828701612f08565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806131e857607f821691505b6020821081036131fb576131fa6131a4565b5b50919050565b7f54686520636f6e747261637420697320706175736564210000000000000000005f82015250565b5f6132356017836127f3565b915061324082613201565b602082019050919050565b5f6020820190508181035f83015261326281613229565b9050919050565b7f746f6b656e20646f65736e2774206578697374000000000000000000000000005f82015250565b5f61329d6013836127f3565b91506132a882613269565b602082019050919050565b5f6020820190508181035f8301526132ca81613291565b9050919050565b7f596f7520616c7265616479206f776e206120746f6b656e2077697468207468695f8201527f7320494400000000000000000000000000000000000000000000000000000000602082015250565b5f61332b6024836127f3565b9150613336826132d1565b604082019050919050565b5f6020820190508181035f8301526133588161331f565b9050919050565b7f4e6f6e5472616e7366657261626c65455243313135353a205472616e736665725f8201527f73206265747765656e206e6f6e2d7a65726f206164647265737365732061726560208201527f206e6f7420616c6c6f7765640000000000000000000000000000000000000000604082015250565b5f6133df604c836127f3565b91506133ea8261335f565b606082019050919050565b5f6020820190508181035f83015261340c816133d3565b9050919050565b5f6040820190506134265f83018561270e565b613433602083018461270e565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61349e8261269d565b91506134a98361269d565b92508282019050808211156134c1576134c0613467565b5b92915050565b7f596f75206861766520616c7265616479206d696e746564207468652066696e615f8201527f6c204e4654000000000000000000000000000000000000000000000000000000602082015250565b5f6135216025836127f3565b915061352c826134c7565b604082019050919050565b5f6020820190508181035f83015261354e81613515565b9050919050565b7f596f75206e65656420746f206f776e20616c6c2074686520546f6b656e2049445f8201527f7320746f206d696e74207468652066696e616c20636572746966696361746500602082015250565b5f6135af603f836127f3565b91506135ba82613555565b604082019050919050565b5f6020820190508181035f8301526135dc816135a3565b9050919050565b5f6135ed8261269d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361361f5761361e613467565b5b600182019050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026136867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261364b565b613690868361364b565b95508019841693508086168417925050509392505050565b5f6136c26136bd6136b88461269d565b612e23565b61269d565b9050919050565b5f819050919050565b6136db836136a8565b6136ef6136e7826136c9565b848454613657565b825550505050565b5f5f905090565b6137066136f7565b6137118184846136d2565b505050565b5b81811015613734576137295f826136fe565b600181019050613717565b5050565b601f8211156137795761374a8161362a565b6137538461363c565b81016020851015613762578190505b61377661376e8561363c565b830182613716565b50505b505050565b5f82821c905092915050565b5f6137995f198460080261377e565b1980831691505092915050565b5f6137b1838361378a565b9150826002028217905092915050565b6137ca826127e9565b67ffffffffffffffff8111156137e3576137e261295f565b5b6137ed82546131d1565b6137f8828285613738565b5f60209050601f831160018114613829575f8415613817578287015190505b61382185826137a6565b865550613888565b601f1984166138378661362a565b5f5b8281101561385e57848901518255600182019150602085019450602081019050613839565b8683101561387b5784890151613877601f89168261378a565b8355505b6001600288020188555050505b505050505050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f6138c4600f836127f3565b91506138cf82613890565b602082019050919050565b5f6020820190508181035f8301526138f1816138b8565b9050919050565b5f81519050613906816126a6565b92915050565b5f602082840312156139215761392061263b565b5b5f61392e848285016138f8565b91505092915050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f61396d61396861396384613937565b612e23565b613940565b9050919050565b61397d81613953565b82525050565b5f6020820190506139965f830184613974565b92915050565b5f6139a68261269d565b91506139b18361269d565b92508282039050818111156139c9576139c8613467565b5b92915050565b5f81905092915050565b5f6139e3826127e9565b6139ed81856139cf565b93506139fd818560208601612803565b80840191505092915050565b7f2f000000000000000000000000000000000000000000000000000000000000005f82015250565b5f613a3d6001836139cf565b9150613a4882613a09565b600182019050919050565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000005f82015250565b5f613a876005836139cf565b9150613a9282613a53565b600582019050919050565b5f613aa882856139d9565b9150613ab382613a31565b9150613abf82846139d9565b9150613aca82613a7b565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f608082019050613b165f830187612f8f565b613b23602083018661270e565b613b30604083018561270e565b613b3d606083018461270e565b95945050505050565b5f6040820190508181035f830152613b5e8185612da7565b90508181036020830152613b728184612da7565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f613b9f82613b7b565b613ba98185613b85565b9350613bb9818560208601612803565b613bc281612811565b840191505092915050565b5f60a082019050613be05f830188612f8f565b613bed6020830187612f8f565b613bfa604083018661270e565b613c07606083018561270e565b8181036080830152613c198184613b95565b90509695505050505050565b5f81519050613c3381612761565b92915050565b5f60208284031215613c4e57613c4d61263b565b5b5f613c5b84828501613c25565b91505092915050565b5f60a082019050613c775f830188612f8f565b613c846020830187612f8f565b8181036040830152613c968186612da7565b90508181036060830152613caa8185612da7565b90508181036080830152613cbe8184613b95565b9050969550505050505056fea264697066735822122077c700ae05b231c9d9c7fece8de811ec1e72fc1e2956e1c7ad3a78fc8787500964736f6c634300081c0033