6080604052670de0b6b3a7640000600c553480156200001d57600080fd5b50604051620051e0380380620051e0833981810160405281019062000043919062000226565b6040518060400160405280601981526020017f4c616e5374656c6c61722050726f706572747920546f6b656e000000000000008152506040518060400160405280600481526020017f4c535054000000000000000000000000000000000000000000000000000000008152508160009081620000c09190620004e7565b508060019081620000d29190620004e7565b5050506001600781905550733ec8593f930ea45ea58c968260e6e9ff53fc934f600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620005ce565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001ee82620001c1565b9050919050565b6200020081620001e1565b81146200020c57600080fd5b50565b6000815190506200022081620001f5565b92915050565b6000806040838503121562000240576200023f620001bc565b5b600062000250858286016200020f565b925050602062000263858286016200020f565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002ef57607f821691505b602082108103620003055762000304620002a7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200036f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000330565b6200037b868362000330565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003c8620003c2620003bc8462000393565b6200039d565b62000393565b9050919050565b6000819050919050565b620003e483620003a7565b620003fc620003f382620003cf565b8484546200033d565b825550505050565b600090565b6200041362000404565b62000420818484620003d9565b505050565b5b8181101562000448576200043c60008262000409565b60018101905062000426565b5050565b601f821115620004975762000461816200030b565b6200046c8462000320565b810160208510156200047c578190505b620004946200048b8562000320565b83018262000425565b50505b505050565b600082821c905092915050565b6000620004bc600019846008026200049c565b1980831691505092915050565b6000620004d78383620004a9565b9150826002028217905092915050565b620004f2826200026d565b67ffffffffffffffff8111156200050e576200050d62000278565b5b6200051a8254620002d6565b620005278282856200044c565b600060209050601f8311600181146200055f57600084156200054a578287015190505b620005568582620004c9565b865550620005c6565b601f1984166200056f866200030b565b60005b82811015620005995784890151825560018201915060208501945060208101905062000572565b86831015620005b95784890151620005b5601f891682620004a9565b8355505b6001600288020188555050505b505050505050565b614c0280620005de6000396000f3fe6080604052600436106102495760003560e01c806370a0823111610139578063b88d4fde116100b6578063e2ae93fb1161007a578063e2ae93fb14610958578063e985e9c514610995578063f37678ae146109d2578063f79d91ae146109fb578063f7b1080814610a24578063fce401b214610a6657610289565b8063b88d4fde14610875578063b8fe6abe1461089e578063c6c9b5b1146108c9578063c87b56dd146108f2578063d95bab4d1461092f57610289565b80639324b625116100fd5780639324b6251461078e57806395082d25146107cb57806395d89b41146107f657806398bdf6f514610821578063a22cb4651461084c57610289565b806370a082311461068157806380920718146106be5780638dec2493146106e95780638e383c6b1461072657806392daac301461076357610289565b806338d16011116101c75780636352211e1161018b5780636352211e146105a95780636a1b7ecc146105e65780636d345213146106115780636e02007d1461063a5780636fa830a61461066557610289565b806338d16011146104b45780633bb3a24d146104dd57806342842e0e1461051a5780634ac80d9714610543578063509bd4ca1461056c57610289565b806319bfbaf91161020e57806319bfbaf9146103cf57806323b872dd1461040c57806324600fc3146104355780632b7ac3f31461044c57806332665ffb1461047757610289565b80620c8df0146102c457806301ffc9a71461030157806306fdde031461033e578063081812fc14610369578063095ea7b3146103a657610289565b36610289576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102809061355b565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bb9061355b565b60405180910390fd5b3480156102d057600080fd5b506102eb60048036038101906102e691906135ed565b610a8f565b6040516102f89190613635565b60405180910390f35b34801561030d57600080fd5b50610328600480360381019061032391906136a8565b610ae5565b6040516103359190613635565b60405180910390f35b34801561034a57600080fd5b50610353610b46565b6040516103609190613754565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b91906137ac565b610bd8565b60405161039d91906137e8565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c89190613803565b610bf4565b005b3480156103db57600080fd5b506103f660048036038101906103f191906137ac565b610c0a565b6040516104039190613635565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e9190613843565b610c2a565b005b34801561044157600080fd5b5061044a610d2c565b005b34801561045857600080fd5b50610461610f06565b60405161046e91906138f5565b60405180910390f35b34801561048357600080fd5b5061049e600480360381019061049991906137ac565b610f2c565b6040516104ab9190613a10565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d691906135ed565b6110c6565b005b3480156104e957600080fd5b5061050460048036038101906104ff91906137ac565b611131565b6040516105119190613754565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c9190613843565b611143565b005b34801561054f57600080fd5b5061056a600480360381019061056591906137ac565b611163565b005b34801561057857600080fd5b50610593600480360381019061058e91906135ed565b6111cf565b6040516105a09190613a41565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb91906137ac565b611218565b6040516105dd91906137e8565b60405180910390f35b3480156105f257600080fd5b506105fb61122a565b6040516106089190613a41565b60405180910390f35b34801561061d57600080fd5b5061063860048036038101906106339190613bc7565b611230565b005b34801561064657600080fd5b5061064f6113b6565b60405161065c9190613a41565b60405180910390f35b61067f600480360381019061067a91906137ac565b6113c0565b005b34801561068d57600080fd5b506106a860048036038101906106a391906135ed565b611775565b6040516106b59190613a41565b60405180910390f35b3480156106ca57600080fd5b506106d361182f565b6040516106e09190613c57565b60405180910390f35b3480156106f557600080fd5b50610710600480360381019061070b91906135ed565b611855565b60405161071d9190613635565b60405180910390f35b34801561073257600080fd5b5061074d600480360381019061074891906137ac565b6118ab565b60405161075a9190613c81565b60405180910390f35b34801561076f57600080fd5b506107786118c3565b6040516107859190613a41565b60405180910390f35b34801561079a57600080fd5b506107b560048036038101906107b09190613c9c565b6118cb565b6040516107c29190613635565b60405180910390f35b3480156107d757600080fd5b506107e06119b4565b6040516107ed9190613a41565b60405180910390f35b34801561080257600080fd5b5061080b6119c1565b6040516108189190613754565b60405180910390f35b34801561082d57600080fd5b50610836611a53565b6040516108439190613a41565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e9190613d24565b611a59565b005b34801561088157600080fd5b5061089c60048036038101906108979190613d64565b611a6f565b005b3480156108aa57600080fd5b506108b3611a8c565b6040516108c09190613a41565b60405180910390f35b3480156108d557600080fd5b506108f060048036038101906108eb9190613e88565b611a96565b005b3480156108fe57600080fd5b50610919600480360381019061091491906137ac565b611bbe565b6040516109269190613754565b60405180910390f35b34801561093b57600080fd5b5061095660048036038101906109519190613f13565b611cd1565b005b34801561096457600080fd5b5061097f600480360381019061097a91906135ed565b611da9565b60405161098c9190613a41565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190613f6f565b611dc1565b6040516109c99190613635565b60405180910390f35b3480156109de57600080fd5b506109f960048036038101906109f49190613faf565b611e55565b005b348015610a0757600080fd5b50610a226004803603810190610a1d91906137ac565b612084565b005b348015610a3057600080fd5b50610a4b6004803603810190610a4691906137ac565b6120c5565b604051610a5d9695949392919061401e565b60405180910390f35b348015610a7257600080fd5b50610a8d6004803603810190610a889190614086565b6121d6565b005b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b3f5750610b3e8261233b565b5b9050919050565b606060008054610b55906140f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610b81906140f5565b8015610bce5780601f10610ba357610100808354040283529160200191610bce565b820191906000526020600020905b815481529060010190602001808311610bb157829003601f168201915b5050505050905090565b6000610be38261241d565b50610bed826124a5565b9050919050565b610c068282610c016124e2565b6124ea565b5050565b60126020528060005260406000206000915054906101000a900460ff1681565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c9c5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610c9391906137e8565b60405180910390fd5b6000610cb08383610cab6124e2565b6124fc565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d26578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610d1d93929190614126565b60405180910390fd5b50505050565b610d34612716565b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db2906141a9565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060003373ffffffffffffffffffffffffffffffffffffffff1682604051610e26906141fa565b60006040518083038185875af1925050503d8060008114610e63576040519150601f19603f3d011682016040523d82523d6000602084013e610e68565b606091505b5050905080610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea39061425b565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6583604051610ef29190613a41565b60405180910390a25050610f0461275c565b565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f34613474565b600f60008381526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160149054906101000a900460ff1615151515815260200160048201805461103d906140f5565b80601f0160208091040260200160405190810160405280929190818152602001828054611069906140f5565b80156110b65780601f1061108b576101008083540402835291602001916110b6565b820191906000526020600020905b81548152906001019060200180831161109957829003601f168201915b5050505050815250509050919050565b6110ce612716565b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061112e61275c565b50565b606061113c82611bbe565b9050919050565b61115e83838360405180602001604052806000815250611a6f565b505050565b6012600082815260200190815260200160002060009054906101000a900460ff166111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba906142c7565b60405180910390fd5b6111cc81612766565b50565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112238261241d565b9050919050565b600c5481565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b390614333565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b40634182846040518363ffffffff1660e01b81526004016113199291906143a8565b602060405180830381865afa158015611336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135a91906143ed565b611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139090614466565b60405180910390fd5b816013600085815260200190815260200160002081905550505050565b6000600b54905090565b80600f600082815260200190815260200160002060030160149054906101000a900460ff16611424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141b906144d2565b60405180910390fd5b61142c612716565b6000600f60008481526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160149054906101000a900460ff16151515158152602001600482018054611537906140f5565b80601f0160208091040260200160405190810160405280929190818152602001828054611563906140f5565b80156115b05780601f10611585576101008083540402835291602001916115b0565b820191906000526020600020905b81548152906001019060200180831161159357829003601f168201915b50505050508152505090506000606482604001516115ce9190614550565b90508082604001516115e09190614581565b341115611622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161990614601565b60405180910390fd5b816040015160106000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116799190614581565b9250508190555080601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116cf9190614581565b925050819055506000600f600086815260200190815260200160002060030160146101000a81548160ff021916908315150217905550611714826060015133866127ec565b833373ffffffffffffffffffffffffffffffffffffffff167f17b4722101958f228ab97d24ff9624947f4ad9586617e0a8d5450f8248e8f57f846040015160405161175f9190613a41565b60405180910390a3505061177161275c565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e85760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016117df91906137e8565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60136020528060005260406000206000915090505481565b6301e1338081565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b40634184846040518363ffffffff1660e01b815260040161192a9291906143a8565b602060405180830381865afa158015611947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196b91906143ed565b6119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a190614466565b60405180910390fd5b6001905092915050565b68056bc75e2d6310000081565b6060600180546119d0906140f5565b80601f01602080910402602001604051908101604052809291908181526020018280546119fc906140f5565b8015611a495780601f10611a1e57610100808354040283529160200191611a49565b820191906000526020600020905b815481529060010190602001808311611a2c57829003601f168201915b5050505050905090565b600b5481565b611a6b611a646124e2565b8383612959565b5050565b611a7a848484610c2a565b611a8684848484612ac8565b50505050565b6000600c54905090565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1990614333565b60405180910390fd5b600b6000815480929190611b3590614621565b91905055506000600b549050611b4b3382612c7f565b611b558185612d78565b611b60818484611e55565b6001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6060611bc98261241d565b506000600660008481526020019081526020016000208054611bea906140f5565b80601f0160208091040260200160405190810160405280929190818152602001828054611c16906140f5565b8015611c635780601f10611c3857610100808354040283529160200191611c63565b820191906000526020600020905b815481529060010190602001808311611c4657829003601f168201915b505050505090506000611c74612d86565b90506000815103611c89578192505050611ccc565b600082511115611cbe578082604051602001611ca69291906146a5565b60405160208183030381529060405292505050611ccc565b611cc784612d9d565b925050505b919050565b813373ffffffffffffffffffffffffffffffffffffffff16611cf282611218565b73ffffffffffffffffffffffffffffffffffffffff1614611d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3f90614715565b60405180910390fd5b60016012600085815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b6000815480929190611d8990614621565b919050559050611d993382612c7f565b611da38184612d78565b50505050565b60106020528060005260406000206000915090505481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed890614333565b60405180910390fd5b6040518060c001604052808481526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018381526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160011515815260200182815250600f60008581526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160030160146101000a81548160ff02191690831515021790555060a082015181600401908161202791906148d7565b50905050823373ffffffffffffffffffffffffffffffffffffffff167fa4043420082106818c012932beaa592e9685cdce8d3ce850b5dd7f6d33c395c984600185604051612077939291906149a9565b60405180910390a3505050565b80600c819055507f5fb4654f1efe30c6141eaa6855ffcb27e0b361d899b05e21b1a4d0b3e71e14db816040516120ba9190613a41565b60405180910390a150565b600f6020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160149054906101000a900460ff1690806004018054612153906140f5565b80601f016020809104026020016040519081016040528092919081815260200182805461217f906140f5565b80156121cc5780601f106121a1576101008083540402835291602001916121cc565b820191906000526020600020905b8154815290600101906020018083116121af57829003601f168201915b5050505050905086565b813373ffffffffffffffffffffffffffffffffffffffff166121f782611218565b73ffffffffffffffffffffffffffffffffffffffff161461224d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224490614715565b60405180910390fd5b60008211612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228790614a33565b60405180910390fd5b81600f600085815260200190815260200160002060020181905550823373ffffffffffffffffffffffffffffffffffffffff167fa4043420082106818c012932beaa592e9685cdce8d3ce850b5dd7f6d33c395c984600f600088815260200190815260200160002060030160149054906101000a900460ff16600f600089815260200190815260200160002060040160405161232e93929190614ad7565b60405180910390a3505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061240657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612416575061241582612e06565b5b9050919050565b60008061242983612e70565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361249c57826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016124939190613a41565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6124f78383836001612ead565b505050565b60008061250884612e70565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461254a57612549818486613072565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146125db5761258c600085600080612ead565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461265e576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b600260075403612752576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600781905550565b6001600781905550565b600061277560008360006124fc565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127e857816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016127df9190613a41565b60405180910390fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361285e5760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161285591906137e8565b60405180910390fd5b600061286c838360006124fc565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128df57816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016128d69190613a41565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612953578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161294a93929190614126565b60405180910390fd5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129ca57816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016129c191906137e8565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612abb9190613635565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115612c79578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b0c6124e2565b8685856040518563ffffffff1660e01b8152600401612b2e9493929190614b15565b6020604051808303816000875af1925050508015612b6a57506040513d601f19601f82011682018060405250810190612b679190614b76565b60015b612bee573d8060008114612b9a576040519150601f19603f3d011682016040523d82523d6000602084013e612b9f565b606091505b506000815103612be657836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612bdd91906137e8565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612c7757836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612c6e91906137e8565b60405180910390fd5b505b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cf15760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612ce891906137e8565b60405180910390fd5b6000612cff838360006124fc565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612d735760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401612d6a91906137e8565b60405180910390fd5b505050565b612d828282613136565b5050565b606060405180602001604052806000815250905090565b6060612da88261241d565b506000612db3612d86565b90506000815111612dd35760405180602001604052806000815250612dfe565b80612ddd84613192565b604051602001612dee9291906146a5565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080612ee65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561301a576000612ef68461241d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f6157508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612f745750612f728184611dc1565b155b15612fb657826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401612fad91906137e8565b60405180910390fd5b811561301857838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61307d838383613260565b61313157600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130f257806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016130e99190613a41565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401613128929190614ba3565b60405180910390fd5b505050565b8060066000848152602001908152602001600020908161315691906148d7565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516131869190613a41565b60405180910390a15050565b6060600060016131a184613321565b01905060008167ffffffffffffffff8111156131c0576131bf613a9c565b5b6040519080825280601f01601f1916602001820160405280156131f25781602001600182028036833780820191505090505b509050600082602001820190505b600115613255578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581613249576132486144f2565b5b04945060008503613200575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561331857508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806132d957506132d88484611dc1565b5b8061331757508273ffffffffffffffffffffffffffffffffffffffff166132ff836124a5565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061337f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381613375576133746144f2565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106133bc576d04ee2d6d415b85acef810000000083816133b2576133b16144f2565b5b0492506020810190505b662386f26fc1000083106133eb57662386f26fc1000083816133e1576133e06144f2565b5b0492506010810190505b6305f5e1008310613414576305f5e100838161340a576134096144f2565b5b0492506008810190505b612710831061343957612710838161342f5761342e6144f2565b5b0492506004810190505b6064831061345c5760648381613452576134516144f2565b5b0492506002810190505b600a831061346b576001810190505b80915050919050565b6040518060c0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001606081525090565b600082825260208201905092915050565b7f5468697320636f6e747261637420646f6573206e6f742061636365707420457460008201527f6865720000000000000000000000000000000000000000000000000000000000602082015250565b60006135456023836134d8565b9150613550826134e9565b604082019050919050565b6000602082019050818103600083015261357481613538565b9050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135ba8261358f565b9050919050565b6135ca816135af565b81146135d557600080fd5b50565b6000813590506135e7816135c1565b92915050565b60006020828403121561360357613602613585565b5b6000613611848285016135d8565b91505092915050565b60008115159050919050565b61362f8161361a565b82525050565b600060208201905061364a6000830184613626565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61368581613650565b811461369057600080fd5b50565b6000813590506136a28161367c565b92915050565b6000602082840312156136be576136bd613585565b5b60006136cc84828501613693565b91505092915050565b600081519050919050565b60005b838110156136fe5780820151818401526020810190506136e3565b60008484015250505050565b6000601f19601f8301169050919050565b6000613726826136d5565b61373081856134d8565b93506137408185602086016136e0565b6137498161370a565b840191505092915050565b6000602082019050818103600083015261376e818461371b565b905092915050565b6000819050919050565b61378981613776565b811461379457600080fd5b50565b6000813590506137a681613780565b92915050565b6000602082840312156137c2576137c1613585565b5b60006137d084828501613797565b91505092915050565b6137e2816135af565b82525050565b60006020820190506137fd60008301846137d9565b92915050565b6000806040838503121561381a57613819613585565b5b6000613828858286016135d8565b925050602061383985828601613797565b9150509250929050565b60008060006060848603121561385c5761385b613585565b5b600061386a868287016135d8565b935050602061387b868287016135d8565b925050604061388c86828701613797565b9150509250925092565b6000819050919050565b60006138bb6138b66138b18461358f565b613896565b61358f565b9050919050565b60006138cd826138a0565b9050919050565b60006138df826138c2565b9050919050565b6138ef816138d4565b82525050565b600060208201905061390a60008301846138e6565b92915050565b61391981613776565b82525050565b613928816135af565b82525050565b6139378161361a565b82525050565b600082825260208201905092915050565b6000613959826136d5565b613963818561393d565b93506139738185602086016136e0565b61397c8161370a565b840191505092915050565b600060c08301600083015161399f6000860182613910565b5060208301516139b2602086018261391f565b5060408301516139c56040860182613910565b5060608301516139d8606086018261391f565b5060808301516139eb608086018261392e565b5060a083015184820360a0860152613a03828261394e565b9150508091505092915050565b60006020820190508181036000830152613a2a8184613987565b905092915050565b613a3b81613776565b82525050565b6000602082019050613a566000830184613a32565b92915050565b6000819050919050565b613a6f81613a5c565b8114613a7a57600080fd5b50565b600081359050613a8c81613a66565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ad48261370a565b810181811067ffffffffffffffff82111715613af357613af2613a9c565b5b80604052505050565b6000613b0661357b565b9050613b128282613acb565b919050565b600067ffffffffffffffff821115613b3257613b31613a9c565b5b613b3b8261370a565b9050602081019050919050565b82818337600083830152505050565b6000613b6a613b6584613b17565b613afc565b905082815260208101848484011115613b8657613b85613a97565b5b613b91848285613b48565b509392505050565b600082601f830112613bae57613bad613a92565b5b8135613bbe848260208601613b57565b91505092915050565b600080600060608486031215613be057613bdf613585565b5b6000613bee86828701613797565b9350506020613bff86828701613a7d565b925050604084013567ffffffffffffffff811115613c2057613c1f61358a565b5b613c2c86828701613b99565b9150509250925092565b6000613c41826138c2565b9050919050565b613c5181613c36565b82525050565b6000602082019050613c6c6000830184613c48565b92915050565b613c7b81613a5c565b82525050565b6000602082019050613c966000830184613c72565b92915050565b60008060408385031215613cb357613cb2613585565b5b600083013567ffffffffffffffff811115613cd157613cd061358a565b5b613cdd85828601613b99565b9250506020613cee85828601613a7d565b9150509250929050565b613d018161361a565b8114613d0c57600080fd5b50565b600081359050613d1e81613cf8565b92915050565b60008060408385031215613d3b57613d3a613585565b5b6000613d49858286016135d8565b9250506020613d5a85828601613d0f565b9150509250929050565b60008060008060808587031215613d7e57613d7d613585565b5b6000613d8c878288016135d8565b9450506020613d9d878288016135d8565b9350506040613dae87828801613797565b925050606085013567ffffffffffffffff811115613dcf57613dce61358a565b5b613ddb87828801613b99565b91505092959194509250565b600067ffffffffffffffff821115613e0257613e01613a9c565b5b613e0b8261370a565b9050602081019050919050565b6000613e2b613e2684613de7565b613afc565b905082815260208101848484011115613e4757613e46613a97565b5b613e52848285613b48565b509392505050565b600082601f830112613e6f57613e6e613a92565b5b8135613e7f848260208601613e18565b91505092915050565b600080600060608486031215613ea157613ea0613585565b5b600084013567ffffffffffffffff811115613ebf57613ebe61358a565b5b613ecb86828701613e5a565b9350506020613edc86828701613797565b925050604084013567ffffffffffffffff811115613efd57613efc61358a565b5b613f0986828701613e5a565b9150509250925092565b60008060408385031215613f2a57613f29613585565b5b6000613f3885828601613797565b925050602083013567ffffffffffffffff811115613f5957613f5861358a565b5b613f6585828601613e5a565b9150509250929050565b60008060408385031215613f8657613f85613585565b5b6000613f94858286016135d8565b9250506020613fa5858286016135d8565b9150509250929050565b600080600060608486031215613fc857613fc7613585565b5b6000613fd686828701613797565b9350506020613fe786828701613797565b925050604084013567ffffffffffffffff8111156140085761400761358a565b5b61401486828701613e5a565b9150509250925092565b600060c0820190506140336000830189613a32565b61404060208301886137d9565b61404d6040830187613a32565b61405a60608301866137d9565b6140676080830185613626565b81810360a0830152614079818461371b565b9050979650505050505050565b6000806040838503121561409d5761409c613585565b5b60006140ab85828601613797565b92505060206140bc85828601613797565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061410d57607f821691505b6020821081036141205761411f6140c6565b5b50919050565b600060608201905061413b60008301866137d9565b6141486020830185613a32565b61415560408301846137d9565b949350505050565b7f4e6f2070726f636565647320746f207769746864726177000000000000000000600082015250565b60006141936017836134d8565b915061419e8261415d565b602082019050919050565b600060208201905081810360008301526141c281614186565b9050919050565b600081905092915050565b50565b60006141e46000836141c9565b91506141ef826141d4565b600082019050919050565b6000614205826141d7565b9150819050919050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000614245600f836134d8565b91506142508261420f565b602082019050919050565b6000602082019050818103600083015261427481614238565b9050919050565b7f4e4654206973206e6f7420636f6d70726f6d6973656400000000000000000000600082015250565b60006142b16016836134d8565b91506142bc8261427b565b602082019050919050565b600060208201905081810360008301526142e0816142a4565b9050919050565b7f4b5943206e6f7420766572696669656400000000000000000000000000000000600082015250565b600061431d6010836134d8565b9150614328826142e7565b602082019050919050565b6000602082019050818103600083015261434c81614310565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061437a82614353565b614384818561435e565b93506143948185602086016136e0565b61439d8161370a565b840191505092915050565b600060408201905081810360008301526143c2818561436f565b90506143d16020830184613c72565b9392505050565b6000815190506143e781613cf8565b92915050565b60006020828403121561440357614402613585565b5b6000614411848285016143d8565b91505092915050565b7f496e76616c696420646f63756d656e742070726f6f6600000000000000000000600082015250565b60006144506016836134d8565b915061445b8261441a565b602082019050919050565b6000602082019050818103600083015261447f81614443565b9050919050565b7f4974656d206e6f74206c697374656420666f722073616c650000000000000000600082015250565b60006144bc6018836134d8565b91506144c782614486565b602082019050919050565b600060208201905081810360008301526144eb816144af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061455b82613776565b915061456683613776565b925082614576576145756144f2565b5b828204905092915050565b600061458c82613776565b915061459783613776565b92508282019050808211156145af576145ae614521565b5b92915050565b7f507269636520706c757320666565206e6f74206d657400000000000000000000600082015250565b60006145eb6016836134d8565b91506145f6826145b5565b602082019050919050565b6000602082019050818103600083015261461a816145de565b9050919050565b600061462c82613776565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361465e5761465d614521565b5b600182019050919050565b600081905092915050565b600061467f826136d5565b6146898185614669565b93506146998185602086016136e0565b80840191505092915050565b60006146b18285614674565b91506146bd8284614674565b91508190509392505050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b60006146ff6017836134d8565b915061470a826146c9565b602082019050919050565b6000602082019050818103600083015261472e816146f2565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026147977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261475a565b6147a1868361475a565b95508019841693508086168417925050509392505050565b60006147d46147cf6147ca84613776565b613896565b613776565b9050919050565b6000819050919050565b6147ee836147b9565b6148026147fa826147db565b848454614767565b825550505050565b600090565b61481761480a565b6148228184846147e5565b505050565b5b818110156148465761483b60008261480f565b600181019050614828565b5050565b601f82111561488b5761485c81614735565b6148658461474a565b81016020851015614874578190505b6148886148808561474a565b830182614827565b50505b505050565b600082821c905092915050565b60006148ae60001984600802614890565b1980831691505092915050565b60006148c7838361489d565b9150826002028217905092915050565b6148e0826136d5565b67ffffffffffffffff8111156148f9576148f8613a9c565b5b61490382546140f5565b61490e82828561484a565b600060209050601f831160018114614941576000841561492f578287015190505b61493985826148bb565b8655506149a1565b601f19841661494f86614735565b60005b8281101561497757848901518255600182019150602085019450602081019050614952565b868310156149945784890151614990601f89168261489d565b8355505b6001600288020188555050505b505050505050565b60006060820190506149be6000830186613a32565b6149cb6020830185613626565b81810360408301526149dd818461371b565b9050949350505050565b7f5072696365206d7573742062652061626f7665207a65726f0000000000000000600082015250565b6000614a1d6018836134d8565b9150614a28826149e7565b602082019050919050565b60006020820190508181036000830152614a4c81614a10565b9050919050565b60008154614a60816140f5565b614a6a81866134d8565b94506001821660008114614a855760018114614a9b57614ace565b60ff198316865281151560200286019350614ace565b614aa485614735565b60005b83811015614ac657815481890152600182019150602081019050614aa7565b808801955050505b50505092915050565b6000606082019050614aec6000830186613a32565b614af96020830185613626565b8181036040830152614b0b8184614a53565b9050949350505050565b6000608082019050614b2a60008301876137d9565b614b3760208301866137d9565b614b446040830185613a32565b8181036060830152614b56818461436f565b905095945050505050565b600081519050614b708161367c565b92915050565b600060208284031215614b8c57614b8b613585565b5b6000614b9a84828501614b61565b91505092915050565b6000604082019050614bb860008301856137d9565b614bc56020830184613a32565b939250505056fea26469706673582212204d4f884caf88ac8ea69c0d29741169f8a11bab4d1ec48f70c3f449d8a56fa9df64736f6c63430008180033000000000000000000000000304d1ae62c3ffd9f201a428e027b47332caa7c04000000000000000000000000a3fdde365a5cfe3240530b39909722d6ab959e63