0x608060405234801561001057600080fd5b50613876806100206000396000f3fe60806040526004361061025c5760003560e01c806370a0823111610144578063a99a583c116100b6578063dd62ed3e1161007a578063dd62ed3e146108ad578063e013b224146108ea578063ec0b712e14610913578063f2fde38b1461093e578063f7d48ebb14610967578063fd76282b146109925761025c565b8063a99a583c146107d5578063cf9e6e1214610800578063d03d01291461082b578063d7fb5f2c14610847578063dbac26e9146108705761025c565b80638456cb59116101085780638456cb59146106d55780638da5cb5b146106ec57806395d89b411461071757806398771b6214610742578063a8f6c9131461076d578063a9059cbb146107985761025c565b806370a0823114610602578063715018a61461063f5780637e73337714610656578063810a2c7e146106955780638129fc1c146106be5761025c565b8063378dc3dc116101dd5780634e63d6cc116101a15780634e63d6cc14610502578063576168fc1461052b5780635c975abb1461055657806364b507c4146105815780636ab5e399146105ac5780636c7113e4146105d75761025c565b8063378dc3dc146104415780633e413bee1461046c5780633f4ba83a1461049757806340c10f19146104ae5780634d68ceb9146104d75761025c565b80631897bcf3116102245780631897bcf3146103485780631f43f14b1461037157806323b872dd1461039c578063313ce567146103d957806332c833c0146104045761025c565b806306fdde0314610261578063095ea7b31461028c5780630f331cc2146102c9578063116ffdd6146102f257806318160ddd1461031d575b600080fd5b34801561026d57600080fd5b506102766109bb565b60405161028391906129de565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190612aa8565b610a5c565b6040516102c09190612b03565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb9190612c53565b610a7f565b005b3480156102fe57600080fd5b50610307610a9a565b60405161031491906129de565b60405180910390f35b34801561032957600080fd5b50610332610b28565b60405161033f9190612cab565b60405180910390f35b34801561035457600080fd5b5061036f600480360381019061036a9190612cc6565b610b32565b005b34801561037d57600080fd5b50610386610c26565b6040516103939190612d65565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be9190612d80565b610c4c565b6040516103d09190612b03565b60405180910390f35b3480156103e557600080fd5b506103ee610d1a565b6040516103fb9190612def565b60405180910390f35b34801561041057600080fd5b5061042b60048036038101906104269190612e0a565b610d23565b6040516104389190612fb1565b60405180910390f35b34801561044d57600080fd5b50610456610e78565b6040516104639190612cab565b60405180910390f35b34801561047857600080fd5b50610481610e82565b60405161048e9190612d65565b60405180910390f35b3480156104a357600080fd5b506104ac610ea8565b005b3480156104ba57600080fd5b506104d560048036038101906104d09190612aa8565b610eba565b005b3480156104e357600080fd5b506104ec610f0d565b6040516104f991906129de565b60405180910390f35b34801561050e57600080fd5b5061052960048036038101906105249190612c53565b610f9b565b005b34801561053757600080fd5b50610540610fb6565b60405161054d9190612fe2565b60405180910390f35b34801561056257600080fd5b5061056b610fdc565b6040516105789190612b03565b60405180910390f35b34801561058d57600080fd5b50610596611001565b6040516105a391906129de565b60405180910390f35b3480156105b857600080fd5b506105c161108f565b6040516105ce9190612cab565b60405180910390f35b3480156105e357600080fd5b506105ec611095565b6040516105f991906129de565b60405180910390f35b34801561060e57600080fd5b5061062960048036038101906106249190612e0a565b611127565b6040516106369190612cab565b60405180910390f35b34801561064b57600080fd5b5061065461117e565b005b34801561066257600080fd5b5061067d60048036038101906106789190612aa8565b611192565b60405161068c93929190612ffd565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190612e0a565b61126e565b005b3480156106ca57600080fd5b506106d36112d9565b005b3480156106e157600080fd5b506106ea61166f565b005b3480156106f857600080fd5b50610701611681565b60405161070e9190612fe2565b60405180910390f35b34801561072357600080fd5b5061072c6116b9565b60405161073991906129de565b60405180910390f35b34801561074e57600080fd5b5061075761175a565b6040516107649190612fe2565b60405180910390f35b34801561077957600080fd5b50610782611780565b60405161078f9190612d65565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190612aa8565b6117a6565b6040516107cc9190612b03565b60405180910390f35b3480156107e157600080fd5b506107ea611868565b6040516107f79190612fe2565b60405180910390f35b34801561080c57600080fd5b5061081561188e565b60405161082291906129de565b60405180910390f35b6108456004803603810190610840919061303b565b61191c565b005b34801561085357600080fd5b5061086e60048036038101906108699190612e0a565b611acf565b005b34801561087c57600080fd5b5061089760048036038101906108929190612e0a565b611b3a565b6040516108a49190612b03565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf91906130aa565b611b5a565b6040516108e19190612cab565b60405180910390f35b3480156108f657600080fd5b50610911600480360381019061090c9190612c53565b611bef565b005b34801561091f57600080fd5b50610928611c0a565b60405161093591906129de565b60405180910390f35b34801561094a57600080fd5b5061096560048036038101906109609190612e0a565b611c98565b005b34801561097357600080fd5b5061097c611d1b565b6040516109899190612fe2565b60405180910390f35b34801561099e57600080fd5b506109b960048036038101906109b49190612e0a565b611d41565b005b606060006109c7611d8d565b90508060030180546109d890613119565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0490613119565b8015610a515780601f10610a2657610100808354040283529160200191610a51565b820191906000526020600020905b815481529060010190602001808311610a3457829003601f168201915b505050505091505090565b600080610a67611db5565b9050610a74818585611dbd565b600191505092915050565b610a87611dcf565b80600a9081610a9691906132ec565b5050565b600c8054610aa790613119565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad390613119565b8015610b205780601f10610af557610100808354040283529160200191610b20565b820191906000526020600020905b815481529060010190602001808311610b0357829003601f168201915b505050505081565b6000600354905090565b610b3a611e56565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b8152600401610bbb939291906133be565b6020604051808303816000875af1158015610bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfe9190613421565b50610c093383611e97565b8160046000828254610c1b919061347d565b925050819055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c56611e56565b6000610c60611db5565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c9b57600080fd5b60011515601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610cf857600080fd5b610d03858285611f19565b610d0e858585611fad565b60019150509392505050565b60006012905090565b6060601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610e6d5783829060005260206000209060030201604051806060016040529081600082018054610db790613119565b80601f0160208091040260200160405190810160405280929190818152602001828054610de390613119565b8015610e305780601f10610e0557610100808354040283529160200191610e30565b820191906000526020600020905b815481529060010190602001808311610e1357829003601f168201915b50505050508152602001600182015481526020016002820160009054906101000a900460ff16151515158152505081526020019060010190610d84565b505050509050919050565b6000600454905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610eb0611dcf565b610eb86120a1565b565b610ec2611e56565b610eca611dcf565b60035481600454610edb91906134b1565b1115610ee657600080fd5b610ef08282612113565b8060046000828254610f0291906134b1565b925050819055505050565b600d8054610f1a90613119565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4690613119565b8015610f935780601f10610f6857610100808354040283529160200191610f93565b820191906000526020600020905b815481529060010190602001808311610f7657829003601f168201915b505050505081565b610fa3611dcf565b80600c9081610fb291906132ec565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610fe7612195565b90508060000160009054906101000a900460ff1691505090565b600a805461100e90613119565b80601f016020809104026020016040519081016040528092919081815260200182805461103a90613119565b80156110875780601f1061105c57610100808354040283529160200191611087565b820191906000526020600020905b81548152906001019060200180831161106a57829003601f168201915b505050505081565b600e5481565b6060600c80546110a490613119565b80601f01602080910402602001604051908101604052809291908181526020018280546110d090613119565b801561111d5780601f106110f25761010080835404028352916020019161111d565b820191906000526020600020905b81548152906001019060200180831161110057829003601f168201915b5050505050905090565b600080611132611d8d565b90508060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915050919050565b611186611dcf565b61119060006121bd565b565b601260205281600052604060002081815481106111ae57600080fd5b9060005260206000209060030201600091509150508060000180546111d290613119565b80601f01602080910402602001604051908101604052809291908181526020018280546111fe90613119565b801561124b5780601f106112205761010080835404028352916020019161124b565b820191906000526020600020905b81548152906001019060200180831161122e57829003601f168201915b5050505050908060010154908060020160009054906101000a900460ff16905083565b611276611e56565b61127e611dcf565b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006112e3612294565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff161480156113315750825b9050600060018367ffffffffffffffff16148015611366575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015611374575080155b156113ab576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156113fb5760018560000160086101000a81548160ff0219169083151502179055505b61146f6040518060400160405280601481526020017f53756d6f6c6162204c656e64696e6720506f6f6c0000000000000000000000008152506040518060400160405280601481526020017f53756d6f6c6162204c656e64696e6720506f6f6c0000000000000000000000008152506122bc565b61147f61147a611db5565b6122d2565b6114876122e6565b61148f610d1a565b60ff16600a61149e9190613618565b60fa6114aa9190613663565b60038190555073a6f49c590a8e1afbebf5c245e1768435c7718bf6600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733655c868cafa3aa97803cc0aded6419a5eeb4ab2600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600781526020017f53756d6f6c616200000000000000000000000000000000000000000000000000815250600a908161159e91906132ec565b506040518060400160405280601081526020017f47726579726f636b204361706974616c00000000000000000000000000000000815250600c90816115e391906132ec565b5060405180606001604052806022815260200161381f602291396006908161160b91906132ec565b5083156116685760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161165f91906136f4565b60405180910390a15b5050505050565b611677611dcf565b61167f6122f8565b565b60008061168c61236a565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b606060006116c5611d8d565b90508060040180546116d690613119565b80601f016020809104026020016040519081016040528092919081815260200182805461170290613119565b801561174f5780601f106117245761010080835404028352916020019161174f565b820191906000526020600020905b81548152906001019060200180831161173257829003601f168201915b505050505091505090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006117b0611e56565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117e957600080fd5b60011515601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361184657600080fd5b6000611850611db5565b905061185d818585611fad565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6006805461189b90613119565b80601f01602080910402602001604051908101604052809291908181526020018280546118c790613119565b80156119145780601f106118e957610100808354040283529160200191611914565b820191906000526020600020905b8154815290600101906020018083116118f757829003601f168201915b505050505081565b611924611e56565b6003548260045461193591906134b1565b111561194057600080fd5b61194a8383612113565b816004600082825461195c91906134b1565b9250508190555060006040518060600160405280838152602001848152602001600115158152509050601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002090600302016000909190919091506000820151816000019081611a0391906132ec565b506020820151816001015560408201518160020160006101000a81548160ff02191690831515021790555050506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611a7890613740565b60006040518083038185875af1925050503d8060008114611ab5576040519150601f19603f3d011682016040523d82523d6000602084013e611aba565b606091505b5050905080611ac857600080fd5b5050505050565b611ad7611e56565b611adf611dcf565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60136020528060005260406000206000915054906101000a900460ff1681565b600080611b65611d8d565b90508060010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491505092915050565b611bf7611dcf565b80600d9081611c0691906132ec565b5050565b600b8054611c1790613119565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4390613119565b8015611c905780601f10611c6557610100808354040283529160200191611c90565b820191906000526020600020905b815481529060010190602001808311611c7357829003601f168201915b505050505081565b611ca0611dcf565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d06906137c7565b60405180910390fd5b611d18816121bd565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d49611dcf565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00905090565b600033905090565b611dca8383836001612392565b505050565b611dd7611db5565b73ffffffffffffffffffffffffffffffffffffffff16611df5611681565b73ffffffffffffffffffffffffffffffffffffffff1614611e5457611e18611db5565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611e4b9190612fe2565b60405180910390fd5b565b611e5e610fdc565b15611e95576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f095760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611f009190612fe2565b60405180910390fd5b611f1582600083612578565b5050565b6000611f258484611b5a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611fa75781811015611f97578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611f8e939291906137e7565b60405180910390fd5b611fa684848484036000612392565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361201f5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016120169190612fe2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120915760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016120889190612fe2565b60405180910390fd5b61209c838383612578565b505050565b6120a96127b7565b60006120b3612195565b905060008160000160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6120fb611db5565b6040516121089190612fe2565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121855760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161217c9190612fe2565b60405180910390fd5b61219160008383612578565b5050565b60007fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300905090565b60006121c761236a565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6122c46127f7565b6122ce8282612837565b5050565b6122da6127f7565b6122e381612874565b50565b6122ee6127f7565b6122f66128fa565b565b612300611e56565b600061230a612195565b905060018160000160006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612352611db5565b60405161235f9190612fe2565b60405180910390a150565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b600061239c611d8d565b9050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036124105760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016124079190612fe2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036124825760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016124799190612fe2565b60405180910390fd5b828160010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508115612571578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516125689190612cab565b60405180910390a35b5050505050565b6000612582611d8d565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036125d857818160020160008282546125cc91906134b1565b925050819055506126b1565b60008160000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612667578481846040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161265e939291906137e7565b60405180910390fd5b8281038260000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126fc5781816002016000828254039250508190555061274c565b818160000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127a99190612cab565b60405180910390a350505050565b6127bf610fdc565b6127f5576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6127ff61292e565b612835576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61283f6127f7565b6000612849611d8d565b90508281600301908161285c91906132ec565b508181600401908161286e91906132ec565b50505050565b61287c6127f7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128ee5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016128e59190612fe2565b60405180910390fd5b6128f7816121bd565b50565b6129026127f7565b600061290c612195565b905060008160000160006101000a81548160ff02191690831515021790555050565b6000612938612294565b60000160089054906101000a900460ff16905090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561298857808201518184015260208101905061296d565b60008484015250505050565b6000601f19601f8301169050919050565b60006129b08261294e565b6129ba8185612959565b93506129ca81856020860161296a565b6129d381612994565b840191505092915050565b600060208201905081810360008301526129f881846129a5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a3f82612a14565b9050919050565b612a4f81612a34565b8114612a5a57600080fd5b50565b600081359050612a6c81612a46565b92915050565b6000819050919050565b612a8581612a72565b8114612a9057600080fd5b50565b600081359050612aa281612a7c565b92915050565b60008060408385031215612abf57612abe612a0a565b5b6000612acd85828601612a5d565b9250506020612ade85828601612a93565b9150509250929050565b60008115159050919050565b612afd81612ae8565b82525050565b6000602082019050612b186000830184612af4565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b6082612994565b810181811067ffffffffffffffff82111715612b7f57612b7e612b28565b5b80604052505050565b6000612b92612a00565b9050612b9e8282612b57565b919050565b600067ffffffffffffffff821115612bbe57612bbd612b28565b5b612bc782612994565b9050602081019050919050565b82818337600083830152505050565b6000612bf6612bf184612ba3565b612b88565b905082815260208101848484011115612c1257612c11612b23565b5b612c1d848285612bd4565b509392505050565b600082601f830112612c3a57612c39612b1e565b5b8135612c4a848260208601612be3565b91505092915050565b600060208284031215612c6957612c68612a0a565b5b600082013567ffffffffffffffff811115612c8757612c86612a0f565b5b612c9384828501612c25565b91505092915050565b612ca581612a72565b82525050565b6000602082019050612cc06000830184612c9c565b92915050565b60008060408385031215612cdd57612cdc612a0a565b5b6000612ceb85828601612a93565b9250506020612cfc85828601612a93565b9150509250929050565b6000819050919050565b6000612d2b612d26612d2184612a14565b612d06565b612a14565b9050919050565b6000612d3d82612d10565b9050919050565b6000612d4f82612d32565b9050919050565b612d5f81612d44565b82525050565b6000602082019050612d7a6000830184612d56565b92915050565b600080600060608486031215612d9957612d98612a0a565b5b6000612da786828701612a5d565b9350506020612db886828701612a5d565b9250506040612dc986828701612a93565b9150509250925092565b600060ff82169050919050565b612de981612dd3565b82525050565b6000602082019050612e046000830184612de0565b92915050565b600060208284031215612e2057612e1f612a0a565b5b6000612e2e84828501612a5d565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b6000612e7f8261294e565b612e898185612e63565b9350612e9981856020860161296a565b612ea281612994565b840191505092915050565b612eb681612a72565b82525050565b612ec581612ae8565b82525050565b60006060830160008301518482036000860152612ee88282612e74565b9150506020830151612efd6020860182612ead565b506040830151612f106040860182612ebc565b508091505092915050565b6000612f278383612ecb565b905092915050565b6000602082019050919050565b6000612f4782612e37565b612f518185612e42565b935083602082028501612f6385612e53565b8060005b85811015612f9f5784840389528151612f808582612f1b565b9450612f8b83612f2f565b925060208a01995050600181019050612f67565b50829750879550505050505092915050565b60006020820190508181036000830152612fcb8184612f3c565b905092915050565b612fdc81612a34565b82525050565b6000602082019050612ff76000830184612fd3565b92915050565b6000606082019050818103600083015261301781866129a5565b90506130266020830185612c9c565b6130336040830184612af4565b949350505050565b60008060006060848603121561305457613053612a0a565b5b600061306286828701612a5d565b935050602061307386828701612a93565b925050604084013567ffffffffffffffff81111561309457613093612a0f565b5b6130a086828701612c25565b9150509250925092565b600080604083850312156130c1576130c0612a0a565b5b60006130cf85828601612a5d565b92505060206130e085828601612a5d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061313157607f821691505b602082108103613144576131436130ea565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026131ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261316f565b6131b6868361316f565b95508019841693508086168417925050509392505050565b60006131e96131e46131df84612a72565b612d06565b612a72565b9050919050565b6000819050919050565b613203836131ce565b61321761320f826131f0565b84845461317c565b825550505050565b600090565b61322c61321f565b6132378184846131fa565b505050565b5b8181101561325b57613250600082613224565b60018101905061323d565b5050565b601f8211156132a0576132718161314a565b61327a8461315f565b81016020851015613289578190505b61329d6132958561315f565b83018261323c565b50505b505050565b600082821c905092915050565b60006132c3600019846008026132a5565b1980831691505092915050565b60006132dc83836132b2565b9150826002028217905092915050565b6132f58261294e565b67ffffffffffffffff81111561330e5761330d612b28565b5b6133188254613119565b61332382828561325f565b600060209050601f8311600181146133565760008415613344578287015190505b61334e85826132d0565b8655506133b6565b601f1984166133648661314a565b60005b8281101561338c57848901518255600182019150602085019450602081019050613367565b868310156133a957848901516133a5601f8916826132b2565b8355505b6001600288020188555050505b505050505050565b60006060820190506133d36000830186612fd3565b6133e06020830185612fd3565b6133ed6040830184612c9c565b949350505050565b6133fe81612ae8565b811461340957600080fd5b50565b60008151905061341b816133f5565b92915050565b60006020828403121561343757613436612a0a565b5b60006134458482850161340c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061348882612a72565b915061349383612a72565b92508282039050818111156134ab576134aa61344e565b5b92915050565b60006134bc82612a72565b91506134c783612a72565b92508282019050808211156134df576134de61344e565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561353c578086048111156135185761351761344e565b5b60018516156135275780820291505b8081029050613535856134e5565b94506134fc565b94509492505050565b6000826135555760019050613611565b816135635760009050613611565b81600181146135795760028114613583576135b2565b6001915050613611565b60ff8411156135955761359461344e565b5b8360020a9150848211156135ac576135ab61344e565b5b50613611565b5060208310610133831016604e8410600b84101617156135e75782820a9050838111156135e2576135e161344e565b5b613611565b6135f484848460016134f2565b9250905081840481111561360b5761360a61344e565b5b81810290505b9392505050565b600061362382612a72565b915061362e83612a72565b925061365b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613545565b905092915050565b600061366e82612a72565b915061367983612a72565b925082820261368781612a72565b9150828204841483151761369e5761369d61344e565b5b5092915050565b6000819050919050565b600067ffffffffffffffff82169050919050565b60006136de6136d96136d4846136a5565b612d06565b6136af565b9050919050565b6136ee816136c3565b82525050565b600060208201905061370960008301846136e5565b92915050565b600081905092915050565b50565b600061372a60008361370f565b91506137358261371a565b600082019050919050565b600061374b8261371d565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137b1602683612959565b91506137bc82613755565b604082019050919050565b600060208201905081810360008301526137e0816137a4565b9050919050565b60006060820190506137fc6000830186612fd3565b6138096020830185612c9c565b6138166040830184612c9c565b94935050505056fe545934326a686a776e52393155475a4d42557a54344c774a516b6743463161514852a2646970667358221220edb1857432167f473a737184c5624a0f0420cf94b1472fdbf21448d30ab4d82f64736f6c63430008180033