0x6080604052600436106102135760003560e01c806370a0823111610118578063a9059cbb116100a0578063d12a76881161006f578063d12a7688146107d4578063dd62ed3e146107ff578063df8408fe1461083c578063f2fde38b14610865578063f345bd851461088e5761021a565b8063a9059cbb1461071a578063ad16a0cf14610757578063c851cc3214610782578063cae3f02e146107ab5761021a565b806395d89b41116100e757806395d89b41146106235780639ba3f06a1461064e578063a457c2d71461068b578063a607494a146106c8578063a6a3436e146106f15761021a565b806370a082311461057b578063715018a6146105b857806377e58a31146105cf5780638da5cb5b146105f85761021a565b8063313ce5671161019b57806349bd5a5e1161016a57806349bd5a5e146104805780634a6d4a37146104ab5780635342acb4146104d65780635c9a05b814610513578063698a5897146105505761021a565b8063313ce567146103c457806339509351146103ef57806342966c681461042c578063431f2445146104555761021a565b80631458beac116101e25780631458beac146102dd5780631694505e1461030857806318160ddd1461033357806323b872dd1461035e57806330b63d801461039b5761021a565b806303fd2a451461021f578063045544431461024a57806306fdde0314610275578063095ea7b3146102a05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108b9565b6040516102419190612bdb565b60405180910390f35b34801561025657600080fd5b5061025f6108bf565b60405161026c9190612c0f565b60405180910390f35b34801561028157600080fd5b5061028a6108c6565b6040516102979190612cba565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c29190612d48565b610958565b6040516102d49190612da3565b60405180910390f35b3480156102e957600080fd5b506102f261097b565b6040516102ff9190612c0f565b60405180910390f35b34801561031457600080fd5b5061031d610981565b60405161032a9190612e1d565b60405180910390f35b34801561033f57600080fd5b506103486109a7565b6040516103559190612c0f565b60405180910390f35b34801561036a57600080fd5b5061038560048036038101906103809190612e38565b6109b1565b6040516103929190612da3565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd9190612e8b565b6109e0565b005b3480156103d057600080fd5b506103d9610b97565b6040516103e69190612ee7565b60405180910390f35b3480156103fb57600080fd5b5061041660048036038101906104119190612d48565b610ba0565b6040516104239190612da3565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e9190612f02565b610bd7565b005b34801561046157600080fd5b5061046a610c27565b6040516104779190612c0f565b60405180910390f35b34801561048c57600080fd5b50610495610c2d565b6040516104a29190612bdb565b60405180910390f35b3480156104b757600080fd5b506104c0610c53565b6040516104cd9190612c0f565b60405180910390f35b3480156104e257600080fd5b506104fd60048036038101906104f89190612f2f565b610c59565b60405161050a9190612da3565b60405180910390f35b34801561051f57600080fd5b5061053a60048036038101906105359190612f2f565b610c79565b6040516105479190612da3565b60405180910390f35b34801561055c57600080fd5b50610565610c99565b6040516105729190612bdb565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190612f2f565b610cbf565b6040516105af9190612c0f565b60405180910390f35b3480156105c457600080fd5b506105cd610d07565b005b3480156105db57600080fd5b506105f660048036038101906105f19190612f88565b610d1b565b005b34801561060457600080fd5b5061060d610dff565b60405161061a9190612bdb565b60405180910390f35b34801561062f57600080fd5b50610638610e29565b6040516106459190612cba565b60405180910390f35b34801561065a57600080fd5b5061067560048036038101906106709190612ffe565b610ebb565b6040516106829190612c0f565b60405180910390f35b34801561069757600080fd5b506106b260048036038101906106ad9190612d48565b610ed3565b6040516106bf9190612da3565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea9190613160565b610f4a565b005b3480156106fd57600080fd5b5061071860048036038101906107139190612f2f565b610fc6565b005b34801561072657600080fd5b50610741600480360381019061073c9190612d48565b611115565b60405161074e9190612da3565b60405180910390f35b34801561076357600080fd5b5061076c611138565b6040516107799190612c0f565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190612f2f565b61113e565b005b3480156107b757600080fd5b506107d260048036038101906107cd9190612e8b565b6116f5565b005b3480156107e057600080fd5b506107e9611894565b6040516107f69190612c0f565b60405180910390f35b34801561080b57600080fd5b50610826600480360381019061082191906131a9565b61189a565b6040516108339190612c0f565b60405180910390f35b34801561084857600080fd5b50610863600480360381019061085e9190612f88565b611921565b005b34801561087157600080fd5b5061088c60048036038101906108879190612f2f565b6119bd565b005b34801561089a57600080fd5b506108a3611a40565b6040516108b09190612c0f565b60405180910390f35b61dead81565b6201518081565b6060600380546108d590613218565b80601f016020809104026020016040519081016040528092919081815260200182805461090190613218565b801561094e5780601f106109235761010080835404028352916020019161094e565b820191906000526020600020905b81548152906001019060200180831161093157829003601f168201915b5050505050905090565b600080610963611a46565b9050610970818585611a4e565b600191505092915050565b600b5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000806109bc611a46565b90506109c9858285611c17565b6109d4858585611ca3565b60019150509392505050565b6109e86121b1565b60646109f26109a7565b6109fc91906132a7565b8210610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a349061334a565b60405180910390fd5b6064610a476109a7565b610a5191906132a7565b8110610a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a899061334a565b60405180910390fd5b60008211610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc906133dc565b60405180910390fd5b60008111610b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0f9061346e565b60405180910390fd5b6012600a610b2691906135c1565b82610b31919061360c565b600c819055506012600a610b4591906135c1565b81610b50919061360c565b600d819055507f9716128a636528fa50210bbc0beccc798a478589fd73810448dca2891bfc1b0c600c54600d54604051610b8b929190613666565b60405180910390a15050565b60006012905090565b600080610bab611a46565b9050610bcc818585610bbd858961189a565b610bc7919061368f565b611a4e565b600191505092915050565b60008111610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c119061370f565b60405180910390fd5b610c24338261222f565b50565b60085481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600e6020528060005260406000206000915054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d0f6121b1565b610d1960006123fc565b565b610d236121b1565b610d2c826124c2565b610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d629061377b565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f399c10fc86f718f4269b5fcf54194fd65525a652bcfc12e3542c8457648345978282604051610df392919061379b565b60405180910390a15050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e3890613218565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6490613218565b8015610eb15780601f10610e8657610100808354040283529160200191610eb1565b820191906000526020600020905b815481529060010190602001808311610e9457829003601f168201915b5050505050905090565b60066020528060005260406000206000915090505481565b600080610ede611a46565b90506000610eec828661189a565b905083811015610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2890613836565b60405180910390fd5b610f3e8286868403611a4e565b60019250505092915050565b610f526121b1565b60008180519060200120905060006201518042610f6f919061368f565b9050806006600084815260200190815260200160002081905550817f039238ed1566bfde7f10abd8db86aa7489c202da6e2f8b661ff97cc94719b59b82604051610fb99190612c0f565b60405180910390a2505050565b610fce6121b1565b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156110395750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106f906138c8565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe350eafeb77907c314723a0d8854919a914d11e973c487eb728818ba6cc8842f600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161110a9190612bdb565b60405180910390a150565b600080611120611a46565b905061112d818585611ca3565b600191505092915050565b600d5481565b6111466121b1565b6040518060400160405280601081526020017f757064617465526f75746572506169720000000000000000000000000000000081525060008180519060200120905060006006600083815260200190815260200160002054036111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d590613934565b60405180910390fd5b6006600082815260200190815260200160002054421015611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b906139a0565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561129f5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6112de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d590613a32565b60405180910390fd5b600083905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113549190613a67565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190613a67565b6040518363ffffffff1660e01b81526004016113fc929190613a94565b602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190613a67565b905061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156114aa5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6114e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e090613b2f565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116ac30601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611a4e565b7f799e60742536ea7cdd3c3213158b31174028bc0855080d6e73f3193e67f0258285826040516116dd929190613a94565b60405180910390a150506116f0826124db565b505050565b6116fd6121b1565b6040518060400160405280601b81526020017f6368616e6765546178466f724c6971756964697479416e6444616f00000000008152506000818051906020012090506000600660008381526020019081526020016000205403611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90613934565b60405180910390fd5b60066000828152602001908152602001600020544210156117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e2906139a0565b60405180910390fd5b600683856117f9919061368f565b111561183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183190613bc1565b60405180910390fd5b8360098190555082600a819055507f4f690c07d9c11a6da5b07e418d8f99e41b07e1ab65df93fff5e3e66d9de21ced600954600a5460405161187d929190613666565b60405180910390a161188e826124db565b50505050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119296121b1565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f318c131114339c004fff0a22fcdbbc0566bb2a7cd3aa1660e636ec5a66784ff282826040516119b192919061379b565b60405180910390a15050565b6119c56121b1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b90613c53565b60405180910390fd5b611a3d816123fc565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab490613ce5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2390613d77565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c0a9190612c0f565b60405180910390a3505050565b6000611c23848461189a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c9d5781811015611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8690613de3565b60405180910390fd5b611c9c8484848403611a4e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0990613e75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7890613f07565b60405180910390fd5b80611d8b84610cbf565b1015611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc390613f99565b60405180910390fd5b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e6d5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015611e8857506000600954600a54611e86919061368f565b115b8015611ea15750601160149054906101000a900460ff16155b156121a0576000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f60576000600b54611f0730610cbf565b611f119190613fb9565b9050600c548110611f2857611f27600c54612504565b5b600d54600b5410611f5e57611f3e600d546125c5565b600d54600b6000828254611f529190613fb9565b92505081905550600191505b505b6000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120035750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561201057829050612097565b60006064600a5485612022919061360c565b61202c91906132a7565b90506000606460095486612040919061360c565b61204a91906132a7565b90508082612058919061368f565b856120639190613fb9565b925081600b6000828254612077919061368f565b925050819055506120948730838561208f919061368f565b612811565b50505b6120a2858583612811565b8115612199576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516120f09061401e565b60006040518083038185875af1925050503d806000811461212d576040519150601f19603f3d011682016040523d82523d6000602084013e612132565b606091505b5050905080612197577f85c56b65941d7802c1279ab36fe16bb81ff2f60707c9ecf4a6527a4c114fc97c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff164760405161218e929190614033565b60405180910390a15b505b50506121ac565b6121ab838383612811565b5b505050565b6121b9611a46565b73ffffffffffffffffffffffffffffffffffffffff166121d7610dff565b73ffffffffffffffffffffffffffffffffffffffff161461222d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612224906140a8565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361229e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122959061413a565b60405180910390fd5b6122aa82600083612a87565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612330576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612327906141cc565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123e39190612c0f565b60405180910390a36123f783600084612a8c565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080823b905060008163ffffffff1611915050919050565b600081805190602001209050600060066000838152602001908152602001600020819055505050565b6001601160146101000a81548160ff021916908315150217905550600060028261252e91906132a7565b90506000818361253e9190613fb9565b9050600047905061254e836125c5565b6000814761255c9190613fb9565b90506125688382612a91565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161259b939291906141ec565b60405180910390a1505050506000601160146101000a81548160ff02191690831515021790555050565b6001601160146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156125fd576125fc613035565b5b60405190808252806020026020018201604052801561262b5781602001602082028036833780820191505090505b509050308160008151811061264357612642614223565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270e9190613a67565b8160018151811061272257612721614223565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127c095949392919061434b565b600060405180830381600087803b1580156127da57600080fd5b505af11580156127ee573d6000803e3d6000fd5b50505050506000601160146101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287790613e75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e690613f07565b60405180910390fd5b6128fa838383612a87565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297790613f99565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a6e9190612c0f565b60405180910390a3612a81848484612a8c565b50505050565b505050565b505050565b6001601160146101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612b35969594939291906143a5565b60606040518083038185885af1158015612b53573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b78919061441b565b5050506000601160146101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bc582612b9a565b9050919050565b612bd581612bba565b82525050565b6000602082019050612bf06000830184612bcc565b92915050565b6000819050919050565b612c0981612bf6565b82525050565b6000602082019050612c246000830184612c00565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c64578082015181840152602081019050612c49565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c8c82612c2a565b612c968185612c35565b9350612ca6818560208601612c46565b612caf81612c70565b840191505092915050565b60006020820190508181036000830152612cd48184612c81565b905092915050565b6000604051905090565b600080fd5b600080fd5b612cf981612bba565b8114612d0457600080fd5b50565b600081359050612d1681612cf0565b92915050565b612d2581612bf6565b8114612d3057600080fd5b50565b600081359050612d4281612d1c565b92915050565b60008060408385031215612d5f57612d5e612ce6565b5b6000612d6d85828601612d07565b9250506020612d7e85828601612d33565b9150509250929050565b60008115159050919050565b612d9d81612d88565b82525050565b6000602082019050612db86000830184612d94565b92915050565b6000819050919050565b6000612de3612dde612dd984612b9a565b612dbe565b612b9a565b9050919050565b6000612df582612dc8565b9050919050565b6000612e0782612dea565b9050919050565b612e1781612dfc565b82525050565b6000602082019050612e326000830184612e0e565b92915050565b600080600060608486031215612e5157612e50612ce6565b5b6000612e5f86828701612d07565b9350506020612e7086828701612d07565b9250506040612e8186828701612d33565b9150509250925092565b60008060408385031215612ea257612ea1612ce6565b5b6000612eb085828601612d33565b9250506020612ec185828601612d33565b9150509250929050565b600060ff82169050919050565b612ee181612ecb565b82525050565b6000602082019050612efc6000830184612ed8565b92915050565b600060208284031215612f1857612f17612ce6565b5b6000612f2684828501612d33565b91505092915050565b600060208284031215612f4557612f44612ce6565b5b6000612f5384828501612d07565b91505092915050565b612f6581612d88565b8114612f7057600080fd5b50565b600081359050612f8281612f5c565b92915050565b60008060408385031215612f9f57612f9e612ce6565b5b6000612fad85828601612d07565b9250506020612fbe85828601612f73565b9150509250929050565b6000819050919050565b612fdb81612fc8565b8114612fe657600080fd5b50565b600081359050612ff881612fd2565b92915050565b60006020828403121561301457613013612ce6565b5b600061302284828501612fe9565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61306d82612c70565b810181811067ffffffffffffffff8211171561308c5761308b613035565b5b80604052505050565b600061309f612cdc565b90506130ab8282613064565b919050565b600067ffffffffffffffff8211156130cb576130ca613035565b5b6130d482612c70565b9050602081019050919050565b82818337600083830152505050565b60006131036130fe846130b0565b613095565b90508281526020810184848401111561311f5761311e613030565b5b61312a8482856130e1565b509392505050565b600082601f8301126131475761314661302b565b5b81356131578482602086016130f0565b91505092915050565b60006020828403121561317657613175612ce6565b5b600082013567ffffffffffffffff81111561319457613193612ceb565b5b6131a084828501613132565b91505092915050565b600080604083850312156131c0576131bf612ce6565b5b60006131ce85828601612d07565b92505060206131df85828601612d07565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061323057607f821691505b602082108103613243576132426131e9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132b282612bf6565b91506132bd83612bf6565b9250826132cd576132cc613249565b5b828204905092915050565b7f43616e6e6f74206c6971756964617465206d6f7265207468616e203125206f6660008201527f2074686520737570706c79206174206f6e636521000000000000000000000000602082015250565b6000613334603483612c35565b915061333f826132d8565b604082019050919050565b6000602082019050818103600083015261336381613327565b9050919050565b7f4c503a204d757374206c6971756964617465206174206c65617374203120746f60008201527f6b656e2e00000000000000000000000000000000000000000000000000000000602082015250565b60006133c6602483612c35565b91506133d18261336a565b604082019050919050565b600060208201905081810360008301526133f5816133b9565b9050919050565b7f4554482f47617320546f6b656e3a204d757374206c697175696461746520617460008201527f206c65617374203120746f6b656e2e0000000000000000000000000000000000602082015250565b6000613458602f83612c35565b9150613463826133fc565b604082019050919050565b600060208201905081810360008301526134878161344b565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156134e5578086048111156134c1576134c0613278565b5b60018516156134d05780820291505b80810290506134de8561348e565b94506134a5565b94509492505050565b6000826134fe57600190506135ba565b8161350c57600090506135ba565b8160018114613522576002811461352c5761355b565b60019150506135ba565b60ff84111561353e5761353d613278565b5b8360020a91508482111561355557613554613278565b5b506135ba565b5060208310610133831016604e8410600b84101617156135905782820a90508381111561358b5761358a613278565b5b6135ba565b61359d848484600161349b565b925090508184048111156135b4576135b3613278565b5b81810290505b9392505050565b60006135cc82612bf6565b91506135d783612bf6565b92506136047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134ee565b905092915050565b600061361782612bf6565b915061362283612bf6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561365b5761365a613278565b5b828202905092915050565b600060408201905061367b6000830185612c00565b6136886020830184612c00565b9392505050565b600061369a82612bf6565b91506136a583612bf6565b92508282019050808211156136bd576136bc613278565b5b92915050565b7f43616e6e6f74206275726e203020746f6b656e73210000000000000000000000600082015250565b60006136f9601583612c35565b9150613704826136c3565b602082019050919050565b60006020820190508181036000830152613728816136ec565b9050919050565b7f41646472657373206d757374206265206120636f6e7472616374000000000000600082015250565b6000613765601a83612c35565b91506137708261372f565b602082019050919050565b6000602082019050818103600083015261379481613758565b9050919050565b60006040820190506137b06000830185612bcc565b6137bd6020830184612d94565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613820602583612c35565b915061382b826137c4565b604082019050919050565b6000602082019050818103600083015261384f81613813565b9050919050565b7f44414f2057616c6c65742063616e6e6f7420626520746865204465616420616460008201527f64726573732c206f722030210000000000000000000000000000000000000000602082015250565b60006138b2602c83612c35565b91506138bd82613856565b604082019050919050565b600060208201905081810360008301526138e1816138a5565b9050919050565b7f46756e6374696f6e206973206c6f636b65640000000000000000000000000000600082015250565b600061391e601283612c35565b9150613929826138e8565b602082019050919050565b6000602082019050818103600083015261394d81613911565b9050919050565b7f54696d656c6f636b206973206163746976650000000000000000000000000000600082015250565b600061398a601283612c35565b915061399582613954565b602082019050919050565b600060208201905081810360008301526139b98161397d565b9050919050565b7f526f757465722063616e6e6f742062652074686520446561642061646472657360008201527f732c206f72203021000000000000000000000000000000000000000000000000602082015250565b6000613a1c602883612c35565b9150613a27826139c0565b604082019050919050565b60006020820190508181036000830152613a4b81613a0f565b9050919050565b600081519050613a6181612cf0565b92915050565b600060208284031215613a7d57613a7c612ce6565b5b6000613a8b84828501613a52565b91505092915050565b6000604082019050613aa96000830185612bcc565b613ab66020830184612bcc565b9392505050565b7f506169722063616e6e6f7420626520746865204465616420616464726573732c60008201527f206f722030210000000000000000000000000000000000000000000000000000602082015250565b6000613b19602683612c35565b9150613b2482613abd565b604082019050919050565b60006020820190508181036000830152613b4881613b0c565b9050919050565b7f45524332303a20746f74616c20746178206d757374206e6f742062652067726560008201527f61746572207468616e2036250000000000000000000000000000000000000000602082015250565b6000613bab602c83612c35565b9150613bb682613b4f565b604082019050919050565b60006020820190508181036000830152613bda81613b9e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c3d602683612c35565b9150613c4882613be1565b604082019050919050565b60006020820190508181036000830152613c6c81613c30565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ccf602483612c35565b9150613cda82613c73565b604082019050919050565b60006020820190508181036000830152613cfe81613cc2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d61602283612c35565b9150613d6c82613d05565b604082019050919050565b60006020820190508181036000830152613d9081613d54565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613dcd601d83612c35565b9150613dd882613d97565b602082019050919050565b60006020820190508181036000830152613dfc81613dc0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613e5f602583612c35565b9150613e6a82613e03565b604082019050919050565b60006020820190508181036000830152613e8e81613e52565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613ef1602383612c35565b9150613efc82613e95565b604082019050919050565b60006020820190508181036000830152613f2081613ee4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613f83602683612c35565b9150613f8e82613f27565b604082019050919050565b60006020820190508181036000830152613fb281613f76565b9050919050565b6000613fc482612bf6565b9150613fcf83612bf6565b9250828203905081811115613fe757613fe6613278565b5b92915050565b600081905092915050565b50565b6000614008600083613fed565b915061401382613ff8565b600082019050919050565b600061402982613ffb565b9150819050919050565b60006040820190506140486000830185612bcc565b6140556020830184612c00565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614092602083612c35565b915061409d8261405c565b602082019050919050565b600060208201905081810360008301526140c181614085565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614124602183612c35565b915061412f826140c8565b604082019050919050565b6000602082019050818103600083015261415381614117565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006141b6602283612c35565b91506141c18261415a565b604082019050919050565b600060208201905081810360008301526141e5816141a9565b9050919050565b60006060820190506142016000830186612c00565b61420e6020830185612c00565b61421b6040830184612c00565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061427761427261426d84614252565b612dbe565b612bf6565b9050919050565b6142878161425c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142c281612bba565b82525050565b60006142d483836142b9565b60208301905092915050565b6000602082019050919050565b60006142f88261428d565b6143028185614298565b935061430d836142a9565b8060005b8381101561433e57815161432588826142c8565b9750614330836142e0565b925050600181019050614311565b5085935050505092915050565b600060a0820190506143606000830188612c00565b61436d602083018761427e565b818103604083015261437f81866142ed565b905061438e6060830185612bcc565b61439b6080830184612c00565b9695505050505050565b600060c0820190506143ba6000830189612bcc565b6143c76020830188612c00565b6143d4604083018761427e565b6143e1606083018661427e565b6143ee6080830185612bcc565b6143fb60a0830184612c00565b979650505050505050565b60008151905061441581612d1c565b92915050565b60008060006060848603121561443457614433612ce6565b5b600061444286828701614406565b935050602061445386828701614406565b925050604061446486828701614406565b915050925092509256fea2646970667358221220e06db29f3769e6f345cca2bdef036759f2ecf61571ba21213569e193eb33412c64736f6c63430008100033
0x6080604052600060085560016009556002600a556000600b556012600a62000028919062000d16565b61271062000037919062000d67565b600c556012600a6200004a919062000d16565b61138862000059919062000d67565b600d553480156200006957600080fd5b5060405162005a4038038062005a4083398181016040528101906200008f919062000e32565b6040518060400160405280600881526020017f4e6f76612044414f0000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e4f56410000000000000000000000000000000000000000000000000000000081525081600390816200010c9190620010e9565b5080600490816200011e9190620010e9565b50505062000141620001356200077360201b60201c565b6200077b60201b60201c565b61dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015620001ad5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b620001ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001e69062001257565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156200025b5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6200029d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200029490620012ef565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000314919062001311565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a2919062001311565b6040518363ffffffff1660e01b8152600401620003c192919062001354565b6020604051808303816000875af1158015620003e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000407919062001311565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004dd30601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200084160201b60201c565b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000716336012600a620006f9919062000d16565b633b9aca006200070a919062000d67565b62000a1260201b60201c565b6200076a600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6200074d919062000d16565b6317d784006200075e919062000d67565b62000a1260201b60201c565b5050506200158c565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620008b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008aa90620013f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000925576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091c906200148f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000a059190620014c2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a7b906200152f565b60405180910390fd5b62000a986000838362000b7f60201b60201c565b806002600082825462000aac919062001551565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b5f9190620014c2565b60405180910390a362000b7b6000838362000b8460201b60201c565b5050565b505050565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c175780860481111562000bef5762000bee62000b89565b5b600185161562000bff5780820291505b808102905062000c0f8562000bb8565b945062000bcf565b94509492505050565b60008262000c32576001905062000d05565b8162000c42576000905062000d05565b816001811462000c5b576002811462000c665762000c9c565b600191505062000d05565b60ff84111562000c7b5762000c7a62000b89565b5b8360020a91508482111562000c955762000c9462000b89565b5b5062000d05565b5060208310610133831016604e8410600b841016171562000cd65782820a90508381111562000cd05762000ccf62000b89565b5b62000d05565b62000ce5848484600162000bc5565b9250905081840481111562000cff5762000cfe62000b89565b5b81810290505b9392505050565b6000819050919050565b600062000d238262000d0c565b915062000d308362000d0c565b925062000d5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c20565b905092915050565b600062000d748262000d0c565b915062000d818362000d0c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000dbd5762000dbc62000b89565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dfa8262000dcd565b9050919050565b62000e0c8162000ded565b811462000e1857600080fd5b50565b60008151905062000e2c8162000e01565b92915050565b6000806040838503121562000e4c5762000e4b62000dc8565b5b600062000e5c8582860162000e1b565b925050602062000e6f8582860162000e1b565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000efb57607f821691505b60208210810362000f115762000f1062000eb3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f7b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f3c565b62000f87868362000f3c565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000fca62000fc462000fbe8462000d0c565b62000f9f565b62000d0c565b9050919050565b6000819050919050565b62000fe68362000fa9565b62000ffe62000ff58262000fd1565b84845462000f49565b825550505050565b600090565b6200101562001006565b6200102281848462000fdb565b505050565b5b818110156200104a576200103e6000826200100b565b60018101905062001028565b5050565b601f8211156200109957620010638162000f17565b6200106e8462000f2c565b810160208510156200107e578190505b620010966200108d8562000f2c565b83018262001027565b50505b505050565b600082821c905092915050565b6000620010be600019846008026200109e565b1980831691505092915050565b6000620010d98383620010ab565b9150826002028217905092915050565b620010f48262000e79565b67ffffffffffffffff81111562001110576200110f62000e84565b5b6200111c825462000ee2565b620011298282856200104e565b600060209050601f8311600181146200116157600084156200114c578287015190505b620011588582620010cb565b865550620011c8565b601f198416620011718662000f17565b60005b828110156200119b5784890151825560018201915060208501945060208101905062001174565b86831015620011bb5784890151620011b7601f891682620010ab565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f526f757465722063616e6e6f742062652074686520446561642061646472657360008201527f732c206f72203021000000000000000000000000000000000000000000000000602082015250565b60006200123f602883620011d0565b91506200124c82620011e1565b604082019050919050565b60006020820190508181036000830152620012728162001230565b9050919050565b7f44414f2057616c6c65742063616e6e6f7420626520746865204465616420616460008201527f64726573732c206f722030210000000000000000000000000000000000000000602082015250565b6000620012d7602c83620011d0565b9150620012e48262001279565b604082019050919050565b600060208201905081810360008301526200130a81620012c8565b9050919050565b6000602082840312156200132a576200132962000dc8565b5b60006200133a8482850162000e1b565b91505092915050565b6200134e8162000ded565b82525050565b60006040820190506200136b600083018562001343565b6200137a602083018462001343565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620013df602483620011d0565b9150620013ec8262001381565b604082019050919050565b600060208201905081810360008301526200141281620013d0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062001477602283620011d0565b9150620014848262001419565b604082019050919050565b60006020820190508181036000830152620014aa8162001468565b9050919050565b620014bc8162000d0c565b82525050565b6000602082019050620014d96000830184620014b1565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001517601f83620011d0565b91506200152482620014df565b602082019050919050565b600060208201905081810360008301526200154a8162001508565b9050919050565b60006200155e8262000d0c565b91506200156b8362000d0c565b925082820190508082111562001586576200158562000b89565b5b92915050565b6144a4806200159c6000396000f3fe6080604052600436106102135760003560e01c806370a0823111610118578063a9059cbb116100a0578063d12a76881161006f578063d12a7688146107d4578063dd62ed3e146107ff578063df8408fe1461083c578063f2fde38b14610865578063f345bd851461088e5761021a565b8063a9059cbb1461071a578063ad16a0cf14610757578063c851cc3214610782578063cae3f02e146107ab5761021a565b806395d89b41116100e757806395d89b41146106235780639ba3f06a1461064e578063a457c2d71461068b578063a607494a146106c8578063a6a3436e146106f15761021a565b806370a082311461057b578063715018a6146105b857806377e58a31146105cf5780638da5cb5b146105f85761021a565b8063313ce5671161019b57806349bd5a5e1161016a57806349bd5a5e146104805780634a6d4a37146104ab5780635342acb4146104d65780635c9a05b814610513578063698a5897146105505761021a565b8063313ce567146103c457806339509351146103ef57806342966c681461042c578063431f2445146104555761021a565b80631458beac116101e25780631458beac146102dd5780631694505e1461030857806318160ddd1461033357806323b872dd1461035e57806330b63d801461039b5761021a565b806303fd2a451461021f578063045544431461024a57806306fdde0314610275578063095ea7b3146102a05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108b9565b6040516102419190612bdb565b60405180910390f35b34801561025657600080fd5b5061025f6108bf565b60405161026c9190612c0f565b60405180910390f35b34801561028157600080fd5b5061028a6108c6565b6040516102979190612cba565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c29190612d48565b610958565b6040516102d49190612da3565b60405180910390f35b3480156102e957600080fd5b506102f261097b565b6040516102ff9190612c0f565b60405180910390f35b34801561031457600080fd5b5061031d610981565b60405161032a9190612e1d565b60405180910390f35b34801561033f57600080fd5b506103486109a7565b6040516103559190612c0f565b60405180910390f35b34801561036a57600080fd5b5061038560048036038101906103809190612e38565b6109b1565b6040516103929190612da3565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd9190612e8b565b6109e0565b005b3480156103d057600080fd5b506103d9610b97565b6040516103e69190612ee7565b60405180910390f35b3480156103fb57600080fd5b5061041660048036038101906104119190612d48565b610ba0565b6040516104239190612da3565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e9190612f02565b610bd7565b005b34801561046157600080fd5b5061046a610c27565b6040516104779190612c0f565b60405180910390f35b34801561048c57600080fd5b50610495610c2d565b6040516104a29190612bdb565b60405180910390f35b3480156104b757600080fd5b506104c0610c53565b6040516104cd9190612c0f565b60405180910390f35b3480156104e257600080fd5b506104fd60048036038101906104f89190612f2f565b610c59565b60405161050a9190612da3565b60405180910390f35b34801561051f57600080fd5b5061053a60048036038101906105359190612f2f565b610c79565b6040516105479190612da3565b60405180910390f35b34801561055c57600080fd5b50610565610c99565b6040516105729190612bdb565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190612f2f565b610cbf565b6040516105af9190612c0f565b60405180910390f35b3480156105c457600080fd5b506105cd610d07565b005b3480156105db57600080fd5b506105f660048036038101906105f19190612f88565b610d1b565b005b34801561060457600080fd5b5061060d610dff565b60405161061a9190612bdb565b60405180910390f35b34801561062f57600080fd5b50610638610e29565b6040516106459190612cba565b60405180910390f35b34801561065a57600080fd5b5061067560048036038101906106709190612ffe565b610ebb565b6040516106829190612c0f565b60405180910390f35b34801561069757600080fd5b506106b260048036038101906106ad9190612d48565b610ed3565b6040516106bf9190612da3565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea9190613160565b610f4a565b005b3480156106fd57600080fd5b5061071860048036038101906107139190612f2f565b610fc6565b005b34801561072657600080fd5b50610741600480360381019061073c9190612d48565b611115565b60405161074e9190612da3565b60405180910390f35b34801561076357600080fd5b5061076c611138565b6040516107799190612c0f565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190612f2f565b61113e565b005b3480156107b757600080fd5b506107d260048036038101906107cd9190612e8b565b6116f5565b005b3480156107e057600080fd5b506107e9611894565b6040516107f69190612c0f565b60405180910390f35b34801561080b57600080fd5b50610826600480360381019061082191906131a9565b61189a565b6040516108339190612c0f565b60405180910390f35b34801561084857600080fd5b50610863600480360381019061085e9190612f88565b611921565b005b34801561087157600080fd5b5061088c60048036038101906108879190612f2f565b6119bd565b005b34801561089a57600080fd5b506108a3611a40565b6040516108b09190612c0f565b60405180910390f35b61dead81565b6201518081565b6060600380546108d590613218565b80601f016020809104026020016040519081016040528092919081815260200182805461090190613218565b801561094e5780601f106109235761010080835404028352916020019161094e565b820191906000526020600020905b81548152906001019060200180831161093157829003601f168201915b5050505050905090565b600080610963611a46565b9050610970818585611a4e565b600191505092915050565b600b5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000806109bc611a46565b90506109c9858285611c17565b6109d4858585611ca3565b60019150509392505050565b6109e86121b1565b60646109f26109a7565b6109fc91906132a7565b8210610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a349061334a565b60405180910390fd5b6064610a476109a7565b610a5191906132a7565b8110610a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a899061334a565b60405180910390fd5b60008211610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc906133dc565b60405180910390fd5b60008111610b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0f9061346e565b60405180910390fd5b6012600a610b2691906135c1565b82610b31919061360c565b600c819055506012600a610b4591906135c1565b81610b50919061360c565b600d819055507f9716128a636528fa50210bbc0beccc798a478589fd73810448dca2891bfc1b0c600c54600d54604051610b8b929190613666565b60405180910390a15050565b60006012905090565b600080610bab611a46565b9050610bcc818585610bbd858961189a565b610bc7919061368f565b611a4e565b600191505092915050565b60008111610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c119061370f565b60405180910390fd5b610c24338261222f565b50565b60085481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600e6020528060005260406000206000915054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d0f6121b1565b610d1960006123fc565b565b610d236121b1565b610d2c826124c2565b610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d629061377b565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f399c10fc86f718f4269b5fcf54194fd65525a652bcfc12e3542c8457648345978282604051610df392919061379b565b60405180910390a15050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e3890613218565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6490613218565b8015610eb15780601f10610e8657610100808354040283529160200191610eb1565b820191906000526020600020905b815481529060010190602001808311610e9457829003601f168201915b5050505050905090565b60066020528060005260406000206000915090505481565b600080610ede611a46565b90506000610eec828661189a565b905083811015610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2890613836565b60405180910390fd5b610f3e8286868403611a4e565b60019250505092915050565b610f526121b1565b60008180519060200120905060006201518042610f6f919061368f565b9050806006600084815260200190815260200160002081905550817f039238ed1566bfde7f10abd8db86aa7489c202da6e2f8b661ff97cc94719b59b82604051610fb99190612c0f565b60405180910390a2505050565b610fce6121b1565b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156110395750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106f906138c8565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe350eafeb77907c314723a0d8854919a914d11e973c487eb728818ba6cc8842f600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161110a9190612bdb565b60405180910390a150565b600080611120611a46565b905061112d818585611ca3565b600191505092915050565b600d5481565b6111466121b1565b6040518060400160405280601081526020017f757064617465526f75746572506169720000000000000000000000000000000081525060008180519060200120905060006006600083815260200190815260200160002054036111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d590613934565b60405180910390fd5b6006600082815260200190815260200160002054421015611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b906139a0565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561129f5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6112de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d590613a32565b60405180910390fd5b600083905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113549190613a67565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190613a67565b6040518363ffffffff1660e01b81526004016113fc929190613a94565b602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190613a67565b905061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156114aa5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6114e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e090613b2f565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116ac30601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611a4e565b7f799e60742536ea7cdd3c3213158b31174028bc0855080d6e73f3193e67f0258285826040516116dd929190613a94565b60405180910390a150506116f0826124db565b505050565b6116fd6121b1565b6040518060400160405280601b81526020017f6368616e6765546178466f724c6971756964697479416e6444616f00000000008152506000818051906020012090506000600660008381526020019081526020016000205403611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90613934565b60405180910390fd5b60066000828152602001908152602001600020544210156117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e2906139a0565b60405180910390fd5b600683856117f9919061368f565b111561183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183190613bc1565b60405180910390fd5b8360098190555082600a819055507f4f690c07d9c11a6da5b07e418d8f99e41b07e1ab65df93fff5e3e66d9de21ced600954600a5460405161187d929190613666565b60405180910390a161188e826124db565b50505050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119296121b1565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f318c131114339c004fff0a22fcdbbc0566bb2a7cd3aa1660e636ec5a66784ff282826040516119b192919061379b565b60405180910390a15050565b6119c56121b1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b90613c53565b60405180910390fd5b611a3d816123fc565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab490613ce5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2390613d77565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c0a9190612c0f565b60405180910390a3505050565b6000611c23848461189a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c9d5781811015611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8690613de3565b60405180910390fd5b611c9c8484848403611a4e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0990613e75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7890613f07565b60405180910390fd5b80611d8b84610cbf565b1015611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc390613f99565b60405180910390fd5b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e6d5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015611e8857506000600954600a54611e86919061368f565b115b8015611ea15750601160149054906101000a900460ff16155b156121a0576000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f60576000600b54611f0730610cbf565b611f119190613fb9565b9050600c548110611f2857611f27600c54612504565b5b600d54600b5410611f5e57611f3e600d546125c5565b600d54600b6000828254611f529190613fb9565b92505081905550600191505b505b6000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120035750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561201057829050612097565b60006064600a5485612022919061360c565b61202c91906132a7565b90506000606460095486612040919061360c565b61204a91906132a7565b90508082612058919061368f565b856120639190613fb9565b925081600b6000828254612077919061368f565b925050819055506120948730838561208f919061368f565b612811565b50505b6120a2858583612811565b8115612199576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516120f09061401e565b60006040518083038185875af1925050503d806000811461212d576040519150601f19603f3d011682016040523d82523d6000602084013e612132565b606091505b5050905080612197577f85c56b65941d7802c1279ab36fe16bb81ff2f60707c9ecf4a6527a4c114fc97c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff164760405161218e929190614033565b60405180910390a15b505b50506121ac565b6121ab838383612811565b5b505050565b6121b9611a46565b73ffffffffffffffffffffffffffffffffffffffff166121d7610dff565b73ffffffffffffffffffffffffffffffffffffffff161461222d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612224906140a8565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361229e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122959061413a565b60405180910390fd5b6122aa82600083612a87565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612330576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612327906141cc565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123e39190612c0f565b60405180910390a36123f783600084612a8c565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080823b905060008163ffffffff1611915050919050565b600081805190602001209050600060066000838152602001908152602001600020819055505050565b6001601160146101000a81548160ff021916908315150217905550600060028261252e91906132a7565b90506000818361253e9190613fb9565b9050600047905061254e836125c5565b6000814761255c9190613fb9565b90506125688382612a91565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161259b939291906141ec565b60405180910390a1505050506000601160146101000a81548160ff02191690831515021790555050565b6001601160146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156125fd576125fc613035565b5b60405190808252806020026020018201604052801561262b5781602001602082028036833780820191505090505b509050308160008151811061264357612642614223565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270e9190613a67565b8160018151811061272257612721614223565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127c095949392919061434b565b600060405180830381600087803b1580156127da57600080fd5b505af11580156127ee573d6000803e3d6000fd5b50505050506000601160146101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287790613e75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e690613f07565b60405180910390fd5b6128fa838383612a87565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297790613f99565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a6e9190612c0f565b60405180910390a3612a81848484612a8c565b50505050565b505050565b505050565b6001601160146101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612b35969594939291906143a5565b60606040518083038185885af1158015612b53573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b78919061441b565b5050506000601160146101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bc582612b9a565b9050919050565b612bd581612bba565b82525050565b6000602082019050612bf06000830184612bcc565b92915050565b6000819050919050565b612c0981612bf6565b82525050565b6000602082019050612c246000830184612c00565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c64578082015181840152602081019050612c49565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c8c82612c2a565b612c968185612c35565b9350612ca6818560208601612c46565b612caf81612c70565b840191505092915050565b60006020820190508181036000830152612cd48184612c81565b905092915050565b6000604051905090565b600080fd5b600080fd5b612cf981612bba565b8114612d0457600080fd5b50565b600081359050612d1681612cf0565b92915050565b612d2581612bf6565b8114612d3057600080fd5b50565b600081359050612d4281612d1c565b92915050565b60008060408385031215612d5f57612d5e612ce6565b5b6000612d6d85828601612d07565b9250506020612d7e85828601612d33565b9150509250929050565b60008115159050919050565b612d9d81612d88565b82525050565b6000602082019050612db86000830184612d94565b92915050565b6000819050919050565b6000612de3612dde612dd984612b9a565b612dbe565b612b9a565b9050919050565b6000612df582612dc8565b9050919050565b6000612e0782612dea565b9050919050565b612e1781612dfc565b82525050565b6000602082019050612e326000830184612e0e565b92915050565b600080600060608486031215612e5157612e50612ce6565b5b6000612e5f86828701612d07565b9350506020612e7086828701612d07565b9250506040612e8186828701612d33565b9150509250925092565b60008060408385031215612ea257612ea1612ce6565b5b6000612eb085828601612d33565b9250506020612ec185828601612d33565b9150509250929050565b600060ff82169050919050565b612ee181612ecb565b82525050565b6000602082019050612efc6000830184612ed8565b92915050565b600060208284031215612f1857612f17612ce6565b5b6000612f2684828501612d33565b91505092915050565b600060208284031215612f4557612f44612ce6565b5b6000612f5384828501612d07565b91505092915050565b612f6581612d88565b8114612f7057600080fd5b50565b600081359050612f8281612f5c565b92915050565b60008060408385031215612f9f57612f9e612ce6565b5b6000612fad85828601612d07565b9250506020612fbe85828601612f73565b9150509250929050565b6000819050919050565b612fdb81612fc8565b8114612fe657600080fd5b50565b600081359050612ff881612fd2565b92915050565b60006020828403121561301457613013612ce6565b5b600061302284828501612fe9565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61306d82612c70565b810181811067ffffffffffffffff8211171561308c5761308b613035565b5b80604052505050565b600061309f612cdc565b90506130ab8282613064565b919050565b600067ffffffffffffffff8211156130cb576130ca613035565b5b6130d482612c70565b9050602081019050919050565b82818337600083830152505050565b60006131036130fe846130b0565b613095565b90508281526020810184848401111561311f5761311e613030565b5b61312a8482856130e1565b509392505050565b600082601f8301126131475761314661302b565b5b81356131578482602086016130f0565b91505092915050565b60006020828403121561317657613175612ce6565b5b600082013567ffffffffffffffff81111561319457613193612ceb565b5b6131a084828501613132565b91505092915050565b600080604083850312156131c0576131bf612ce6565b5b60006131ce85828601612d07565b92505060206131df85828601612d07565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061323057607f821691505b602082108103613243576132426131e9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132b282612bf6565b91506132bd83612bf6565b9250826132cd576132cc613249565b5b828204905092915050565b7f43616e6e6f74206c6971756964617465206d6f7265207468616e203125206f6660008201527f2074686520737570706c79206174206f6e636521000000000000000000000000602082015250565b6000613334603483612c35565b915061333f826132d8565b604082019050919050565b6000602082019050818103600083015261336381613327565b9050919050565b7f4c503a204d757374206c6971756964617465206174206c65617374203120746f60008201527f6b656e2e00000000000000000000000000000000000000000000000000000000602082015250565b60006133c6602483612c35565b91506133d18261336a565b604082019050919050565b600060208201905081810360008301526133f5816133b9565b9050919050565b7f4554482f47617320546f6b656e3a204d757374206c697175696461746520617460008201527f206c65617374203120746f6b656e2e0000000000000000000000000000000000602082015250565b6000613458602f83612c35565b9150613463826133fc565b604082019050919050565b600060208201905081810360008301526134878161344b565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156134e5578086048111156134c1576134c0613278565b5b60018516156134d05780820291505b80810290506134de8561348e565b94506134a5565b94509492505050565b6000826134fe57600190506135ba565b8161350c57600090506135ba565b8160018114613522576002811461352c5761355b565b60019150506135ba565b60ff84111561353e5761353d613278565b5b8360020a91508482111561355557613554613278565b5b506135ba565b5060208310610133831016604e8410600b84101617156135905782820a90508381111561358b5761358a613278565b5b6135ba565b61359d848484600161349b565b925090508184048111156135b4576135b3613278565b5b81810290505b9392505050565b60006135cc82612bf6565b91506135d783612bf6565b92506136047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134ee565b905092915050565b600061361782612bf6565b915061362283612bf6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561365b5761365a613278565b5b828202905092915050565b600060408201905061367b6000830185612c00565b6136886020830184612c00565b9392505050565b600061369a82612bf6565b91506136a583612bf6565b92508282019050808211156136bd576136bc613278565b5b92915050565b7f43616e6e6f74206275726e203020746f6b656e73210000000000000000000000600082015250565b60006136f9601583612c35565b9150613704826136c3565b602082019050919050565b60006020820190508181036000830152613728816136ec565b9050919050565b7f41646472657373206d757374206265206120636f6e7472616374000000000000600082015250565b6000613765601a83612c35565b91506137708261372f565b602082019050919050565b6000602082019050818103600083015261379481613758565b9050919050565b60006040820190506137b06000830185612bcc565b6137bd6020830184612d94565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613820602583612c35565b915061382b826137c4565b604082019050919050565b6000602082019050818103600083015261384f81613813565b9050919050565b7f44414f2057616c6c65742063616e6e6f7420626520746865204465616420616460008201527f64726573732c206f722030210000000000000000000000000000000000000000602082015250565b60006138b2602c83612c35565b91506138bd82613856565b604082019050919050565b600060208201905081810360008301526138e1816138a5565b9050919050565b7f46756e6374696f6e206973206c6f636b65640000000000000000000000000000600082015250565b600061391e601283612c35565b9150613929826138e8565b602082019050919050565b6000602082019050818103600083015261394d81613911565b9050919050565b7f54696d656c6f636b206973206163746976650000000000000000000000000000600082015250565b600061398a601283612c35565b915061399582613954565b602082019050919050565b600060208201905081810360008301526139b98161397d565b9050919050565b7f526f757465722063616e6e6f742062652074686520446561642061646472657360008201527f732c206f72203021000000000000000000000000000000000000000000000000602082015250565b6000613a1c602883612c35565b9150613a27826139c0565b604082019050919050565b60006020820190508181036000830152613a4b81613a0f565b9050919050565b600081519050613a6181612cf0565b92915050565b600060208284031215613a7d57613a7c612ce6565b5b6000613a8b84828501613a52565b91505092915050565b6000604082019050613aa96000830185612bcc565b613ab66020830184612bcc565b9392505050565b7f506169722063616e6e6f7420626520746865204465616420616464726573732c60008201527f206f722030210000000000000000000000000000000000000000000000000000602082015250565b6000613b19602683612c35565b9150613b2482613abd565b604082019050919050565b60006020820190508181036000830152613b4881613b0c565b9050919050565b7f45524332303a20746f74616c20746178206d757374206e6f742062652067726560008201527f61746572207468616e2036250000000000000000000000000000000000000000602082015250565b6000613bab602c83612c35565b9150613bb682613b4f565b604082019050919050565b60006020820190508181036000830152613bda81613b9e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c3d602683612c35565b9150613c4882613be1565b604082019050919050565b60006020820190508181036000830152613c6c81613c30565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ccf602483612c35565b9150613cda82613c73565b604082019050919050565b60006020820190508181036000830152613cfe81613cc2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d61602283612c35565b9150613d6c82613d05565b604082019050919050565b60006020820190508181036000830152613d9081613d54565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613dcd601d83612c35565b9150613dd882613d97565b602082019050919050565b60006020820190508181036000830152613dfc81613dc0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613e5f602583612c35565b9150613e6a82613e03565b604082019050919050565b60006020820190508181036000830152613e8e81613e52565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613ef1602383612c35565b9150613efc82613e95565b604082019050919050565b60006020820190508181036000830152613f2081613ee4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613f83602683612c35565b9150613f8e82613f27565b604082019050919050565b60006020820190508181036000830152613fb281613f76565b9050919050565b6000613fc482612bf6565b9150613fcf83612bf6565b9250828203905081811115613fe757613fe6613278565b5b92915050565b600081905092915050565b50565b6000614008600083613fed565b915061401382613ff8565b600082019050919050565b600061402982613ffb565b9150819050919050565b60006040820190506140486000830185612bcc565b6140556020830184612c00565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614092602083612c35565b915061409d8261405c565b602082019050919050565b600060208201905081810360008301526140c181614085565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614124602183612c35565b915061412f826140c8565b604082019050919050565b6000602082019050818103600083015261415381614117565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006141b6602283612c35565b91506141c18261415a565b604082019050919050565b600060208201905081810360008301526141e5816141a9565b9050919050565b60006060820190506142016000830186612c00565b61420e6020830185612c00565b61421b6040830184612c00565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061427761427261426d84614252565b612dbe565b612bf6565b9050919050565b6142878161425c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142c281612bba565b82525050565b60006142d483836142b9565b60208301905092915050565b6000602082019050919050565b60006142f88261428d565b6143028185614298565b935061430d836142a9565b8060005b8381101561433e57815161432588826142c8565b9750614330836142e0565b925050600181019050614311565b5085935050505092915050565b600060a0820190506143606000830188612c00565b61436d602083018761427e565b818103604083015261437f81866142ed565b905061438e6060830185612bcc565b61439b6080830184612c00565b9695505050505050565b600060c0820190506143ba6000830189612bcc565b6143c76020830188612c00565b6143d4604083018761427e565b6143e1606083018661427e565b6143ee6080830185612bcc565b6143fb60a0830184612c00565b979650505050505050565b60008151905061441581612d1c565b92915050565b60008060006060848603121561443457614433612ce6565b5b600061444286828701614406565b935050602061445386828701614406565b925050604061446486828701614406565b915050925092509256fea2646970667358221220e06db29f3769e6f345cca2bdef036759f2ecf61571ba21213569e193eb33412c64736f6c634300081000330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000ef95d8fb80f3d8f3e6d60ad6e5bf6091f17afb9f