0x608060405234801561001057600080fd5b50613ddc806100206000396000f3fe608060405234801561001057600080fd5b50600436106101a85760003560e01c806342966c68116100f9578063b88d4fde11610097578063e985e9c511610071578063e985e9c5146104ba578063f2fde38b146104ea578063f73d308a14610506578063f98f5b9214610522576101a8565b8063b88d4fde14610452578063c87b56dd1461046e578063d46a72471461049e576101a8565b8063715018a6116100d3578063715018a6146103f05780638da5cb5b146103fa57806395d89b4114610418578063a22cb46514610436576101a8565b806342966c68146103745780636352211e1461039057806370a08231146103c0576101a8565b80631dd784b81161016657806330a30ad21161014057806330a30ad2146102ec578063386bfc981461030a57806340c1a0641461032857806342842e0e14610358576101a8565b80631dd784b81461028157806323b872dd1461029f5780632a55205a146102bb576101a8565b8062cd4b5e146101ad57806301ffc9a7146101cb57806306fdde03146101fb578063081812fc14610219578063095ea7b31461024957806318e97fd114610265575b600080fd5b6101b561053e565b6040516101c29190612574565b60405180910390f35b6101e560048036038101906101e091906125fb565b610564565b6040516101f29190612643565b60405180910390f35b6102036105de565b60405161021091906126f7565b60405180910390f35b610233600480360381019061022e919061274f565b610670565b6040516102409190612574565b60405180910390f35b610263600480360381019061025e91906127a8565b6106f5565b005b61027f600480360381019061027a919061291d565b61080d565b005b610289610907565b6040516102969190612574565b60405180910390f35b6102b960048036038101906102b49190612979565b61092e565b005b6102d560048036038101906102d091906129cc565b61098e565b6040516102e3929190612a1b565b60405180910390f35b6102f4610a3e565b6040516103019190612574565b60405180910390f35b610312610a64565b60405161031f9190612a5d565b60405180910390f35b610342600480360381019061033d919061274f565b610a6a565b60405161034f9190612574565b60405180910390f35b610372600480360381019061036d9190612979565b610a9e565b005b61038e6004803603810190610389919061274f565b610abe565b005b6103aa60048036038101906103a5919061274f565b610b1a565b6040516103b79190612574565b60405180910390f35b6103da60048036038101906103d59190612a78565b610bcc565b6040516103e79190612aa5565b60405180910390f35b6103f8610c84565b005b610402610d0c565b60405161040f9190612574565b60405180910390f35b610420610d36565b60405161042d91906126f7565b60405180910390f35b610450600480360381019061044b9190612aec565b610dc8565b005b61046c60048036038101906104679190612bcd565b610dde565b005b6104886004803603810190610483919061274f565b610e40565b60405161049591906126f7565b60405180910390f35b6104b860048036038101906104b39190612c7c565b610f92565b005b6104d460048036038101906104cf9190612d2f565b61111e565b6040516104e19190612643565b60405180910390f35b61050460048036038101906104ff9190612a78565b6111b2565b005b610520600480360381019061051b9190612d6f565b6112aa565b005b61053c60048036038101906105379190612a78565b611390565b005b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105d757506105d682611451565b5b9050919050565b6060609780546105ed90612dcb565b80601f016020809104026020016040519081016040528092919081815260200182805461061990612dcb565b80156106665780601f1061063b57610100808354040283529160200191610666565b820191906000526020600020905b81548152906001019060200180831161064957829003601f168201915b5050505050905090565b600061067b82611533565b6106ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b190612e6f565b60405180910390fd5b609b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061070082610b1a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076890612f01565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661079061159f565b73ffffffffffffffffffffffffffffffffffffffff1614806107bf57506107be816107b961159f565b61111e565b5b6107fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f590612f93565b60405180910390fd5b61080883836115a7565b505050565b81610100600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661086161159f565b73ffffffffffffffffffffffffffffffffffffffff16146108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae90613025565b60405180910390fd5b6108c18383611660565b827f36b74b18830c30e65d59b02df53467c6cefa8c55cac7bdff2f7bb1a639278885836108ec61159f565b6040516108fa929190613045565b60405180910390a2505050565b61010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61093f61093961159f565b826116d4565b61097e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610975906130e7565b60405180910390fd5b6109898383836117b2565b505050565b60008061099a84611533565b6109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d090613153565b60405180910390fd5b60006064905060006103e882866109f091906131a2565b6109fa919061322b565b905060fc600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16819350935050509250929050565b60ff60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fd5481565b6101006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ab983838360405180602001604052806000815250610dde565b505050565b610acf610ac961159f565b826116d4565b610b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b05906132ce565b60405180910390fd5b610b1781611a19565b50565b6000806099600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90613360565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c34906133f2565b60405180910390fd5b609a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c8c61159f565b73ffffffffffffffffffffffffffffffffffffffff16610caa610d0c565b73ffffffffffffffffffffffffffffffffffffffff1614610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf79061345e565b60405180910390fd5b610d0a6000611a6c565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060988054610d4590612dcb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7190612dcb565b8015610dbe5780601f10610d9357610100808354040283529160200191610dbe565b820191906000526020600020905b815481529060010190602001808311610da157829003601f168201915b5050505050905090565b610dda610dd361159f565b8383611b32565b5050565b610def610de961159f565b836116d4565b610e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e25906130e7565b60405180910390fd5b610e3a84848484611c9f565b50505050565b6060610e4b82611533565b610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e81906134f0565b60405180910390fd5b600060c960008481526020019081526020016000208054610eaa90612dcb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed690612dcb565b8015610f235780601f10610ef857610100808354040283529160200191610f23565b820191906000526020600020905b815481529060010190602001808311610f0657829003601f168201915b505050505090506000610f34611cfb565b9050600081511415610f4a578192505050610f8d565b600082511115610f7f578082604051602001610f6792919061354c565b60405160208183030381529060405292505050610f8d565b610f8884611d12565b925050505b919050565b600060019054906101000a900460ff16610fba5760008054906101000a900460ff1615610fc3565b610fc2611db9565b5b611002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff9906135e2565b60405180910390fd5b60008060019054906101000a900460ff161590508015611052576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61105a611dca565b611062611e23565b61106c8686611e74565b8360fd819055508260fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160ff60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156111165760008060016101000a81548160ff0219169083151502179055505b505050505050565b6000609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6111ba61159f565b73ffffffffffffffffffffffffffffffffffffffff166111d8610d0c565b73ffffffffffffffffffffffffffffffffffffffff161461122e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112259061345e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129590613674565b60405180910390fd5b6112a781611a6c565b50565b6112b2610d0c565b73ffffffffffffffffffffffffffffffffffffffff166112d061159f565b73ffffffffffffffffffffffffffffffffffffffff161480611347575061010260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661132f61159f565b73ffffffffffffffffffffffffffffffffffffffff16145b611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d90613706565b60405180910390fd5b8060fd8190555050565b61139861159f565b73ffffffffffffffffffffffffffffffffffffffff166113b6610d0c565b73ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114039061345e565b60405180910390fd5b8061010260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061151c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061152c575061152b82611ed1565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166099600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b81609b600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661161a83610b1a565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61166982611533565b6116a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169f90613798565b60405180910390fd5b8060c9600084815260200190815260200160002090805190602001906116cf929190612450565b505050565b60006116df82611533565b61171e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117159061382a565b60405180910390fd5b600061172983610b1a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061179857508373ffffffffffffffffffffffffffffffffffffffff1661178084610670565b73ffffffffffffffffffffffffffffffffffffffff16145b806117a957506117a8818561111e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166117d282610b1a565b73ffffffffffffffffffffffffffffffffffffffff1614611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f906138bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188f9061394e565b60405180910390fd5b6118a3838383611f3b565b6118ae6000826115a7565b6001609a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118fe919061396e565b925050819055506001609a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461195591906139a2565b92505081905550816099600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a14838383611f40565b505050565b611a2281611f45565b600060c960008381526020019081526020016000208054611a4290612dcb565b905014611a695760c960008281526020019081526020016000206000611a6891906124d6565b5b50565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9890613a44565b60405180910390fd5b80609c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c929190612643565b60405180910390a3505050565b611caa8484846117b2565b611cb684848484612062565b611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613ad6565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060611d1d82611533565b611d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5390613b68565b60405180910390fd5b6000611d66611cfb565b90506000815111611d865760405180602001604052806000815250611db1565b80611d90846121ea565b604051602001611da192919061354c565b6040516020818303038152906040525b915050919050565b6000611dc43061234b565b15905090565b600060019054906101000a900460ff16611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1090613bfa565b60405180910390fd5b611e2161236e565b565b600060019054906101000a900460ff16611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6990613bfa565b60405180910390fd5b565b600060019054906101000a900460ff16611ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eba90613bfa565b60405180910390fd5b611ecd82826123cf565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b505050565b6000611f5082610b1a565b9050611f5e81600084611f3b565b611f696000836115a7565b6001609a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fb9919061396e565b925050819055506099600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461205e81600084611f40565b5050565b60006120838473ffffffffffffffffffffffffffffffffffffffff1661234b565b156121dd578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026120ac61159f565b8786866040518563ffffffff1660e01b81526004016120ce9493929190613c6f565b6020604051808303816000875af192505050801561210a57506040513d601f19601f820116820180604052508101906121079190613cd0565b60015b61218d573d806000811461213a576040519150601f19603f3d011682016040523d82523d6000602084013e61213f565b606091505b50600081511415612185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217c90613ad6565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506121e2565b600190505b949350505050565b60606000821415612232576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612346565b600082905060005b6000821461226457808061224d90613cfd565b915050600a8261225d919061322b565b915061223a565b60008167ffffffffffffffff8111156122805761227f6127f2565b5b6040519080825280601f01601f1916602001820160405280156122b25781602001600182028036833780820191505090505b5090505b6000851461233f576001826122cb919061396e565b9150600a856122da9190613d46565b60306122e691906139a2565b60f81b8183815181106122fc576122fb613d77565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612338919061322b565b94506122b6565b8093505050505b919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166123bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b490613bfa565b60405180910390fd5b6123cd6123c861159f565b611a6c565b565b600060019054906101000a900460ff1661241e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241590613bfa565b60405180910390fd5b8160979080519060200190612434929190612450565b50806098908051906020019061244b929190612450565b505050565b82805461245c90612dcb565b90600052602060002090601f01602090048101928261247e57600085556124c5565b82601f1061249757805160ff19168380011785556124c5565b828001600101855582156124c5579182015b828111156124c45782518255916020019190600101906124a9565b5b5090506124d29190612516565b5090565b5080546124e290612dcb565b6000825580601f106124f45750612513565b601f0160209004906000526020600020908101906125129190612516565b5b50565b5b8082111561252f576000816000905550600101612517565b5090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061255e82612533565b9050919050565b61256e81612553565b82525050565b60006020820190506125896000830184612565565b92915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6125d8816125a3565b81146125e357600080fd5b50565b6000813590506125f5816125cf565b92915050565b60006020828403121561261157612610612599565b5b600061261f848285016125e6565b91505092915050565b60008115159050919050565b61263d81612628565b82525050565b60006020820190506126586000830184612634565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561269857808201518184015260208101905061267d565b838111156126a7576000848401525b50505050565b6000601f19601f8301169050919050565b60006126c98261265e565b6126d38185612669565b93506126e381856020860161267a565b6126ec816126ad565b840191505092915050565b6000602082019050818103600083015261271181846126be565b905092915050565b6000819050919050565b61272c81612719565b811461273757600080fd5b50565b60008135905061274981612723565b92915050565b60006020828403121561276557612764612599565b5b60006127738482850161273a565b91505092915050565b61278581612553565b811461279057600080fd5b50565b6000813590506127a28161277c565b92915050565b600080604083850312156127bf576127be612599565b5b60006127cd85828601612793565b92505060206127de8582860161273a565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61282a826126ad565b810181811067ffffffffffffffff82111715612849576128486127f2565b5b80604052505050565b600061285c61258f565b90506128688282612821565b919050565b600067ffffffffffffffff821115612888576128876127f2565b5b612891826126ad565b9050602081019050919050565b82818337600083830152505050565b60006128c06128bb8461286d565b612852565b9050828152602081018484840111156128dc576128db6127ed565b5b6128e784828561289e565b509392505050565b600082601f830112612904576129036127e8565b5b81356129148482602086016128ad565b91505092915050565b6000806040838503121561293457612933612599565b5b60006129428582860161273a565b925050602083013567ffffffffffffffff8111156129635761296261259e565b5b61296f858286016128ef565b9150509250929050565b60008060006060848603121561299257612991612599565b5b60006129a086828701612793565b93505060206129b186828701612793565b92505060406129c28682870161273a565b9150509250925092565b600080604083850312156129e3576129e2612599565b5b60006129f18582860161273a565b9250506020612a028582860161273a565b9150509250929050565b612a1581612719565b82525050565b6000604082019050612a306000830185612565565b612a3d6020830184612a0c565b9392505050565b6000819050919050565b612a5781612a44565b82525050565b6000602082019050612a726000830184612a4e565b92915050565b600060208284031215612a8e57612a8d612599565b5b6000612a9c84828501612793565b91505092915050565b6000602082019050612aba6000830184612a0c565b92915050565b612ac981612628565b8114612ad457600080fd5b50565b600081359050612ae681612ac0565b92915050565b60008060408385031215612b0357612b02612599565b5b6000612b1185828601612793565b9250506020612b2285828601612ad7565b9150509250929050565b600067ffffffffffffffff821115612b4757612b466127f2565b5b612b50826126ad565b9050602081019050919050565b6000612b70612b6b84612b2c565b612852565b905082815260208101848484011115612b8c57612b8b6127ed565b5b612b9784828561289e565b509392505050565b600082601f830112612bb457612bb36127e8565b5b8135612bc4848260208601612b5d565b91505092915050565b60008060008060808587031215612be757612be6612599565b5b6000612bf587828801612793565b9450506020612c0687828801612793565b9350506040612c178782880161273a565b925050606085013567ffffffffffffffff811115612c3857612c3761259e565b5b612c4487828801612b9f565b91505092959194509250565b612c5981612a44565b8114612c6457600080fd5b50565b600081359050612c7681612c50565b92915050565b600080600080600060a08688031215612c9857612c97612599565b5b600086013567ffffffffffffffff811115612cb657612cb561259e565b5b612cc2888289016128ef565b955050602086013567ffffffffffffffff811115612ce357612ce261259e565b5b612cef888289016128ef565b9450506040612d0088828901612c67565b9350506060612d1188828901612793565b9250506080612d2288828901612793565b9150509295509295909350565b60008060408385031215612d4657612d45612599565b5b6000612d5485828601612793565b9250506020612d6585828601612793565b9150509250929050565b600060208284031215612d8557612d84612599565b5b6000612d9384828501612c67565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612de357607f821691505b60208210811415612df757612df6612d9c565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000612e59602c83612669565b9150612e6482612dfd565b604082019050919050565b60006020820190508181036000830152612e8881612e4c565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612eeb602183612669565b9150612ef682612e8f565b604082019050919050565b60006020820190508181036000830152612f1a81612ede565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000612f7d603883612669565b9150612f8882612f21565b604082019050919050565b60006020820190508181036000830152612fac81612f70565b9050919050565b7f4f6e6c7920746f6b656e2063726561746f722063616e2063616c6c207468697360008201527f2066756e6374696f6e0000000000000000000000000000000000000000000000602082015250565b600061300f602983612669565b915061301a82612fb3565b604082019050919050565b6000602082019050818103600083015261303e81613002565b9050919050565b6000604082019050818103600083015261305f81856126be565b905061306e6020830184612565565b9392505050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006130d1603183612669565b91506130dc82613075565b604082019050919050565b60006020820190508181036000830152613100816130c4565b9050919050565b7f4e6f6e6578697374656e7420746f6b656e000000000000000000000000000000600082015250565b600061313d601183612669565b915061314882613107565b602082019050919050565b6000602082019050818103600083015261316c81613130565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131ad82612719565b91506131b883612719565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156131f1576131f0613173565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061323682612719565b915061324183612719565b925082613251576132506131fc565b5b828204905092915050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006132b8602d83612669565b91506132c38261325c565b604082019050919050565b600060208201905081810360008301526132e7816132ab565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b600061334a602983612669565b9150613355826132ee565b604082019050919050565b600060208201905081810360008301526133798161333d565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006133dc602a83612669565b91506133e782613380565b604082019050919050565b6000602082019050818103600083015261340b816133cf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613448602083612669565b915061345382613412565b602082019050919050565b600060208201905081810360008301526134778161343b565b9050919050565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b60006134da603183612669565b91506134e58261347e565b604082019050919050565b60006020820190508181036000830152613509816134cd565b9050919050565b600081905092915050565b60006135268261265e565b6135308185613510565b935061354081856020860161267a565b80840191505092915050565b6000613558828561351b565b9150613564828461351b565b91508190509392505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b60006135cc602e83612669565b91506135d782613570565b604082019050919050565b600060208201905081810360008301526135fb816135bf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061365e602683612669565b915061366982613602565b604082019050919050565b6000602082019050818103600083015261368d81613651565b9050919050565b7f4f6e6c792077686974656c6973746572732063616e2063616c6c20746869732060008201527f66756e6374696f6e000000000000000000000000000000000000000000000000602082015250565b60006136f0602883612669565b91506136fb82613694565b604082019050919050565b6000602082019050818103600083015261371f816136e3565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000613782602e83612669565b915061378d82613726565b604082019050919050565b600060208201905081810360008301526137b181613775565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613814602c83612669565b915061381f826137b8565b604082019050919050565b6000602082019050818103600083015261384381613807565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006138a6602583612669565b91506138b18261384a565b604082019050919050565b600060208201905081810360008301526138d581613899565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613938602483612669565b9150613943826138dc565b604082019050919050565b600060208201905081810360008301526139678161392b565b9050919050565b600061397982612719565b915061398483612719565b92508282101561399757613996613173565b5b828203905092915050565b60006139ad82612719565b91506139b883612719565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139ed576139ec613173565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613a2e601983612669565b9150613a39826139f8565b602082019050919050565b60006020820190508181036000830152613a5d81613a21565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613ac0603283612669565b9150613acb82613a64565b604082019050919050565b60006020820190508181036000830152613aef81613ab3565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613b52602f83612669565b9150613b5d82613af6565b604082019050919050565b60006020820190508181036000830152613b8181613b45565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613be4602b83612669565b9150613bef82613b88565b604082019050919050565b60006020820190508181036000830152613c1381613bd7565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613c4182613c1a565b613c4b8185613c25565b9350613c5b81856020860161267a565b613c64816126ad565b840191505092915050565b6000608082019050613c846000830187612565565b613c916020830186612565565b613c9e6040830185612a0c565b8181036060830152613cb08184613c36565b905095945050505050565b600081519050613cca816125cf565b92915050565b600060208284031215613ce657613ce5612599565b5b6000613cf484828501613cbb565b91505092915050565b6000613d0882612719565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d3b57613d3a613173565b5b600182019050919050565b6000613d5182612719565b9150613d5c83612719565b925082613d6c57613d6b6131fc565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212209de0edac2fba66639a49783f89ae933b6638da993d303f9d6773306b43c7caa464736f6c634300080a0033